let t2 = Unix.gettimeofday () in
let t = (1000. *. (t2 -. t1)) in
l:= t::!l;
- Logger.print Format.err_formatter " %fms@\n%!" t ;
- Logger.print Format.err_formatter "Mem use before: %s@\n%!" s1;
- Logger.print Format.err_formatter "Final Mem: %s@\n@\n@\n%!" s2;
+ Logger.verbose Format.err_formatter " %fms@\n%!" t ;
+ Logger.verbose Format.err_formatter "Mem use before: %s@\n%!" s1;
+ Logger.verbose Format.err_formatter "Final Mem: %s@\n@\n@\n%!" s2;
r
;;
Unix.kill !pid Sys.sigint
let time f ?(count=1) ?(msg="") x =
+ if not !Options.verbose then f x
+ else
let rec loop i =
Gc.compact();
let oldstack = read_procmem () in
let r = f x in
let t2 = Unix.gettimeofday () in
let t = (1000. *. (t2 -. t1)) in
- Logger.print Format.err_formatter "%s: " msg;
- if (count != 1) then Logger.print Format.err_formatter "run %i/%i, " i count;
- Logger.print Format.err_formatter "%fms (stack size: before=%s, after=%s)@\n" t oldstack (read_procmem());
+ Logger.verbose Format.err_formatter "%s: " msg;
+ if (count != 1) then Logger.verbose Format.err_formatter "run %i/%i, " i count;
+ Logger.verbose Format.err_formatter "%fms (stack size: before=%s, after=%s)@\n" t oldstack (read_procmem());
if i >= count then (l:= t::!l;r)
else loop (i+1)
in
let r = loop 1 in
- (*Logger.print Format.err_formatter "@\n"; *)
r
;;
let total_time () = List.fold_left (+.) 0. !l;;
| _ -> assert false
let count = ref 0
-let () = at_exit (fun () -> Printf.eprintf "Compute jump called %i times\n" !count)
+let () = at_exit (fun () -> Logger.verbose Format.err_formatter "Compute jump called %i times\n" !count)
module Memo = Hashtbl.Make(struct
type t = Tag.t * StateSet.t * dir
let equal (a,b,c) (d,e,f) = a == d && b == e && c == f
type t = string
type level = int
-let loggers = [ "top-down-run";
+let loggers = [ "parsing";
+ "indexing";
+ "top-down-run";
"top-down-approx";
"result-set";
"level2-jit";
pp_close_box ppf ();
fprintf ppf "@?")
ppf fmt
+
+let _verbose = ref false
+let set_verbose b = _verbose := b
+let verbose ppf fmt =
+ if !_verbose then begin
+ pp_open_hovbox ppf 0;
+ kfprintf (fun _ ->
+ pp_close_box ppf ();
+ fprintf ppf "@?")
+ ppf fmt
+ end else
+ ikfprintf (fun _ ->
+ pp_close_box ppf ();
+ fprintf ppf "@?")
+ ppf fmt
val print : Format.formatter -> ('a, Format.formatter, unit) format -> 'a
val available : unit -> string list
+val set_verbose : bool -> unit
+val verbose : Format.formatter -> ('a, Format.formatter, unit) format -> 'a
if !Options.do_perf then start_perf ();
let r = time ~count:!Options.repeat ~msg:"Execution time" (run auto doc) arg in
if !Options.do_perf then stop_perf ();
- Logger.print Format.err_formatter "Number of results: %i@\n" (count r);
+ Logger.verbose Format.err_formatter "Number of results: %i@\n" (count r);
match outfile with
None -> ()
| Some file ->
let query =
time ~msg:"Parsing query" XPath.parse query_string
in
- if !Options.verbose then begin
- Logger.print Format.err_formatter "Parsed query:@\n%a@\n"
- XPath.Ast.print query;
- end;
+ Logger.verbose Format.err_formatter "Parsed query:%a@\n"
+ XPath.Ast.print query;
let auto, bu_info =
time ~msg:"Compiling query" Compile.compile query
in
(* run the query top_down *)
if !Options.bottom_up then
- Logger.print Format.err_formatter "Cannot run the query in bottom-up mode, using top-down evaluator@\n@?";
+ Logger.verbose Format.err_formatter "Cannot run the query in bottom-up mode, using top-down evaluator@\n@?";
if !Options.count_only then
let module R = ResJIT.Count in
let module M = Runtime.Make(R) in
v
in
main document !Options.query !Options.output_file;
- if !Options.verbose then
- Logger.print Format.err_formatter "Maximum resident set size: %s @\n" (read_procmem());
+ Logger.verbose Format.err_formatter "Maximum resident set size: %s @\n" (read_procmem());
Gc.full_major();
Profile.summary Format.err_formatter
with
let _ = Arg.parse spec anon_fun usage_msg
in
if (!pos > 3 || !pos < 2)
- then begin Arg.usage spec usage_msg; exit 1 end
+ then begin Arg.usage spec usage_msg; exit 1 end;
+ Logger.set_verbose !verbose
let finalize () =
do_text build buf;
close_tag build "";
- Logger.print Format.err_formatter "Finished parsing@\n";
- Logger.print Format.err_formatter "Starting index construction@\n";
+ LOG ( __ "parsing" 2 "%s\n" "Finished parsing");
+ LOG ( __ "indexing" 2 "%s\n" "Starting index construction");
let r = close_document build in
- Logger.print Format.err_formatter "Finished index construction@\n";
+ LOG ( __ "indexing" 2 "%s\n" "Finished index construction");
r
in
Expat.set_start_element_handler parser_ (start_element_handler parser_ build buf);
Expat.set_end_element_handler parser_ (end_element_handler parser_ build buf);
Expat.set_character_data_handler parser_ (character_data_handler parser_ build buf);
- Logger.print Format.err_formatter "Started parsing@\n";
+ LOG ( __ "parsing" 2 "%s\n" "Started parsing");
open_document build !Options.sample_factor !Options.disable_text_collection !Options.text_index_type;
open_tag build "";
parser_, finalize
let is_root t = t == root
let node_of_t t =
- Logger.print err_formatter "Initializing tag structure@\n";
+ LOG ( __ "indexing" 2 "%s\n" "Initializing tag structure");
let _ = Tag.init (mk_tag_ops t) in
- Logger.print err_formatter "Starting tag table construction@\n";
+ LOG ( __ "indexing" 2 "%s\n" "Starting tag table construction");
let f, n, c, d = time collect_labels t ~msg:"Building tag relationship table" in
let c = Array.map TagS.to_ptset c in
let n = Array.map TagS.to_ptset n in
(Ptset.Int.cardinal alltags)
(Ptset.Int.max_elt alltags)
-(*
- Logger.print err_formatter "Average depth: %f, number of leaves %i@\n@?" ((float_of_int a)/. (float_of_int b)) b
-;;
-
-*)
type tree_pointer = tree
let get_tree_pointer x = x.doc