Make the program report query execution time and query serialization time.
[tatoo.git] / src / main.ml
index 3216e71..d6a1986 100644 (file)
 (***********************************************************************)
 
 (*
-  Time-stamp: <Last modified on 2013-03-05 15:26:51 CET by Kim Nguyen>
+  Time-stamp: <Last modified on 2013-03-13 21:29:17 CET by Kim Nguyen>
 *)
 
-(** use: xml_file "XPath querie"
-    or : xml_file -f XPath_querie_file
-    only the first line of XPath_querie_file is read
-*)
-
-module F = Auto.Formula
-module A = Auto.Ata
-module X = Xpath.Compile
-
-(* to force ocaml build to add Formula to the dependency chain even if
-   we don't use it yet*)
-
 let doc =
   let fd = open_in Sys.argv.(1) in
   let d = Tree.Naive.load_xml_file fd in
@@ -49,11 +37,16 @@ let () =
   fprintf err_formatter "Automata: %a\n%!" Auto.Ata.print auto;
   fprintf err_formatter "Evaluating automaton:\n%!";
   let module Naive = Auto.Eval.Make(Tree.Naive) in
+  let t1 = Unix.gettimeofday() in
   let results = Naive.eval auto doc (Tree.Naive.root doc) in
+  let teval = (Unix.gettimeofday () -. t1) *. 1000. in
+  let t1 = Unix.gettimeofday () in
+  output_string stdout "<xml_result>\n";
   List.iter (fun n ->
-    Tree.Naive.print_xml stderr doc n;
-    flush stderr;
-    output_string stderr "\n-------------------\n";
-  ) results
-
-
+    Tree.Naive.print_xml stdout doc n;
+    output_char stdout '\n'
+  ) results;
+  output_string stdout "</xml_result>\n";
+  let tprint = (Unix.gettimeofday () -. t1) *. 1000. in
+  flush stdout;
+  fprintf err_formatter "evaluation time: %fms\nserialization time: %fms\n%!" teval tprint