X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=main.ml;h=7418fa1c482b4a7d098eab5a8f1db268236c87cf;hb=cfd834dcdee634387ad2354f1382eeb9d816be45;hp=4fcc0af9e2ed5631c5b2886e691ffec8ab270b94;hpb=70ff0bfc463882ecf233f1b1a7ac4a8007fa4cc2;p=SXSI%2Fxpathcomp.git diff --git a/main.ml b/main.ml index 4fcc0af..7418fa1 100644 --- a/main.ml +++ b/main.ml @@ -6,24 +6,20 @@ (******************************************************************************) open Ata +INCLUDE "utils.ml" +let () = init_timer();; -let l = ref [] ;; -let time f x = - let t1 = Unix.gettimeofday () in - let r = f x in - let t2 = Unix.gettimeofday () in - let t = (1000. *. (t2 -. t1)) in - l:= t::!l; - Printf.eprintf " %fms\n%!" t ; - 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_string output = + let _ = Tag.init (Tree.tag_pool v) in Printf.eprintf "Parsing query : "; let query = try @@ -38,7 +34,7 @@ let main v query_string output = let auto,ltags,contains = time (XPath.Compile.compile ~querystring:query_string) query in let _ = Ata.dump Format.err_formatter auto in let _ = Printf.eprintf "%!" in - let jump_to = + let jump_to = match contains with None -> (max_int,`NOTHING) | Some s -> @@ -55,6 +51,8 @@ let main v query_string output = time (Tree.init_naive_contains v) s end;(r,`CONTAINS(s)) in + let test_list = jump_to in + (* let test_list = if (!Options.backward) then begin Printf.eprintf "Finding min occurences : "; @@ -66,7 +64,7 @@ let main v query_string output = else acc) jump_to) ltags end else (max_int,`NOTHING) - in + in*) let _ = if (snd test_list) != `NOTHING then let occ,s1,s2 = match test_list with | (x,`TAG (tag)) -> (x, "tag", (Tag.to_string tag)) @@ -79,6 +77,7 @@ let main v query_string output = (if !Options.count_only then "(counting only)" else if !Options.backward then "(bottomup)" else ""); begin let _ = Gc.full_major();Gc.compact() in + let _ = Printf.eprintf "%!" in (* let _ = Gc.set (disabled_gc) in *) if !Options.backward && ((snd test_list) != `NOTHING )then @@ -95,7 +94,7 @@ let main v query_string output = in () else let result = time (top_down auto) v in - let rcount = IdSet.length result in + let rcount = GResult.length result in Printf.eprintf "Number of nodes in the result set : %i\n" rcount; Printf.eprintf "\n%!"; begin @@ -106,10 +105,10 @@ let main v query_string output = time( fun () -> let oc = open_out f in output_string oc "\n"; - IdSet.iter (fun t -> + GResult.iter (fun t -> Tree.print_xml_fast oc v t; output_char oc '\n'; - output_string oc "----------\n"; + ) result) (); end; end; @@ -119,13 +118,13 @@ let main v query_string output = Options.parse_cmdline();; -let v = +let v = if (Filename.check_suffix !Options.input_file ".srx") then begin Printf.eprintf "Loading from file : "; time (Tree.load ~sample:!Options.sample_factor ) - (Filename.chop_suffix !Options.input_file ".srx"); + !Options.input_file; end else let v =