X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Ftatoo.ml;h=ca79411bc66358b451ec7012088d2e67446c999b;hp=6dc66efe22226ce38d9a775f9f2b7c4534840faa;hb=969febf12344a3fe3bf793a323b2e88f7b20ebae;hpb=5b5dcd45cf86701ccfe917c1d6ad73b83bb523c3 diff --git a/src/tatoo.ml b/src/tatoo.ml index 6dc66ef..ca79411 100644 --- a/src/tatoo.ml +++ b/src/tatoo.ml @@ -14,23 +14,35 @@ (***********************************************************************) (* - Time-stamp: + Time-stamp: *) open Format +let time f arg msg = + let t1 = Unix.gettimeofday () in + let r = f arg in + let t2 = Unix.gettimeofday () in + let time = (t2 -. t1) *. 1000. in + Logger.msg `STATS "%s: %fms" msg time; + r + + let main () = let () = Options.parse () in let doc = let fd = open_in !Options.input_file in - let d = Naive_tree.load_xml_file fd in + let d = time Naive_tree.load_xml_file fd "parsing xml document" in close_in fd; d in let query = - Xpath.Parser.parse (Ulexing.from_latin1_string !Options.query) + time + Xpath.Parser.parse + (Ulexing.from_latin1_string !Options.query) + "parsing XPath query" in let auto = - Xpath.Compile.path query + time Xpath.Compile.path query "compiling XPath query" in let output = match !Options.output_file with @@ -38,16 +50,15 @@ let main () = | Some f -> open_out f in if !Options.stats then begin - fprintf err_formatter "@[STATS: Query: %a @]@." Xpath.Ast.print_path query; - fprintf err_formatter "@[STATS: @[Automaton: @\n"; - Ata.print err_formatter auto; - fprintf err_formatter "@]@]@."; + Logger.msg `STATS "Query: %a " Xpath.Ast.print_path query; + Logger.msg `STATS "@[Automaton: @\n%a@]" Ata.print auto; end; + let module Naive = Eval.Make(Naive_tree) in - let t1 = Unix.gettimeofday() in - let results = Naive.eval auto doc (Naive_tree.root doc) in - let teval = (Unix.gettimeofday () -. t1) *. 1000. in - let t1 = Unix.gettimeofday () in + let results = + time (Naive.eval auto doc) (Naive_tree.root doc) "evaluating query" + in + time (fun () -> output_string output "\n"; if !Options.count then begin output_string output (string_of_int (List.length results)); @@ -58,13 +69,10 @@ let main () = output_char output '\n' ) results; output_string output "\n"; - let tprint = (Unix.gettimeofday () -. t1) *. 1000. in flush output; - if output != stdout then close_out output; - if !Options.stats then begin - fprintf err_formatter "@[STATS: evaluation time: %fms@]@." teval; - fprintf err_formatter "@[STATS: serialization time: %fms@]@." tprint - end + if output != stdout then close_out output + +) () "serializing results" let () =