X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=main.ml;h=985a5b2fba0334288536e403a981fa8910e1e4c6;hb=d2cbab156c2b74051cf831dc3ac634aedc8f2c2f;hp=82642787af6ee6b0c62a1b7de61c485a83a17490;hpb=25a3fa55f6de1835d2407283eeb43b01819543f6;p=SXSI%2Fxpathcomp.git diff --git a/main.ml b/main.ml index 8264278..985a5b2 100644 --- a/main.ml +++ b/main.ml @@ -19,10 +19,13 @@ 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.Binary.tag_pool v) in + let _ = Tag.init (Tree.tag_pool v) in Printf.eprintf "Parsing query : "; let query = try time @@ -44,26 +47,30 @@ let main v query output = let _ = match contains with None -> () | Some s -> - let r = Tree.Binary.count v s + 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.Binary.init_contains v) s + time (Tree.init_contains v) s end else begin Printf.eprintf "Naive contains\nCalling global contains : "; - time (Tree.Binary.init_naive_contains v) s + time (Tree.init_naive_contains v) s end 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 - failwith "Count only not implemented in this version" + 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 = time (if !Options.time then run_time auto else run auto) v in - Printf.eprintf "Number of nodes in the result set : %i\n" (TS.length result); + + 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%!"; begin match output with @@ -73,11 +80,13 @@ let main v query output = time( fun () -> let oc = open_out f in output_string oc "\n"; - TS.rev_iter (fun t -> output_string oc "----------\n"; - Tree.Binary.print_xml_fast oc t; + TS.iter (fun t -> output_string oc "----------\n"; + Tree.print_xml_fast oc t; output_char oc '\n') result) (); end; end; + let _ = Gc.set enabled_gc in +(* let _ = Ata.dump Format.err_formatter auto in *) Printf.eprintf "Total running time : %fms\n%!" (total_time()) ;; @@ -88,19 +97,19 @@ let v = then begin Printf.eprintf "Loading from file : "; - time (Tree.Binary.load ~sample:!Options.sample_factor ) + time (Tree.load ~sample:!Options.sample_factor ) (Filename.chop_suffix !Options.input_file ".srx"); end else let v = - time (fun () -> let v = Tree.Binary.parse_xml_uri !Options.input_file; + time (fun () -> let v = Tree.parse_xml_uri !Options.input_file; in Printf.eprintf "Parsing document : %!";v ) () in if !Options.save_file <> "" then begin Printf.eprintf "Writing file to disk : "; - time (Tree.Binary.save v) !Options.save_file; + time (Tree.save v) !Options.save_file; end; v in