X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=main.ml;h=7418fa1c482b4a7d098eab5a8f1db268236c87cf;hb=cfd834dcdee634387ad2354f1382eeb9d816be45;hp=021a18e935bc2b1886aab07cbaec018aa2b65ac5;hpb=04639fe524ee20f7f84c8b08387312d714c9bd56;p=SXSI%2Fxpathcomp.git diff --git a/main.ml b/main.ml index 021a18e..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)) @@ -96,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 @@ -107,7 +105,7 @@ 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'; @@ -120,7 +118,7 @@ let main v query_string output = Options.parse_cmdline();; -let v = +let v = if (Filename.check_suffix !Options.input_file ".srx") then begin