.
[SXSI/xpathcomp.git] / main.ml
diff --git a/main.ml b/main.ml
index aed4ebb..985a5b2 100644 (file)
--- a/main.ml
+++ b/main.ml
@@ -19,7 +19,10 @@ let time f x =
     r
 ;;
 let total_time () =  List.fold_left (+.) 0. !l;;
-
+let enabled_gc = Gc.get()
+let disabled_gc = { Gc.get() with
+                     Gc.max_overhead = 1000000; 
+                     Gc.space_overhead = 100 }
 
 let main v query output =
     let _ = Tag.init (Tree.tag_pool v) in
@@ -47,7 +50,7 @@ let main v query output =
              let r = Tree.count v s 
              in
                Printf.eprintf "Global count is %i, using " r;
-               if r < 60000 then begin
+               if r < !Options.tc_threshold then begin
                  Printf.eprintf "TextCollection contains\nCalling global contains : ";
                  time (Tree.init_contains v) s
                end
@@ -58,12 +61,14 @@ let main v query output =
        in
          Printf.eprintf "Execution time %s : " (if !Options.count_only then "(counting only)" else "");
          begin
+           let _ = Gc.full_major();Gc.compact() in
+           let _ = Gc.set (disabled_gc) in 
            if !Options.count_only then
              let r = time ( run_count auto  )v in
              let _ = Printf.eprintf "Number of nodes in the result set : %i\n%!" r
              in ()
            else      
-(*           let _ = Gc.set ({ Gc.get() with Gc.max_overhead = 1000000; Gc.space_overhead = 100 }) in  *)
+
              let result,rcount = time (if !Options.time then run_time auto else run auto) v in   
                Printf.eprintf "Number of nodes in the result set : %i\n" rcount;
                Printf.eprintf "\n%!";
@@ -75,12 +80,13 @@ let main v query output =
                      time( fun () ->
                              let oc = open_out f in
                                output_string oc "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";                                
-                               TS.iter (fun t -> 
+                               TS.iter (fun t -> output_string oc "----------\n";
                                           Tree.print_xml_fast oc t;
                                           output_char oc '\n') result) ();
              end;
          end;
-         let _ = Ata.dump Format.err_formatter auto in
+         let _ = Gc.set enabled_gc in
+(*       let _ = Ata.dump Format.err_formatter auto in *)
          Printf.eprintf "Total running time : %fms\n%!" (total_time())
 ;;