end
-let time f ?(count=1) ?(msg="") x =
- if not !Config.verbose then f x
- else
- let rec loop i =
- Gc.compact();
- let oldmem = System.status () in
- let t1 = Unix.gettimeofday () in
- let r = f x in
- let t2 = Unix.gettimeofday () in
- let newmem = System.status () in
- let t = (1000. *. (t2 -. t1)) in
- Logger.verbose Format.err_formatter "@[%s: [" msg;
- if (count != 1) then Logger.verbose Format.err_formatter "run %i/%i, " i count;
- begin
- Format.pp_open_vbox Format.err_formatter (2 + String.length msg);
- Logger.verbose
- Format.err_formatter
- "@\n| Time: %fms@\n| Memory before: %a@\n| Memory after: %a@\n]@]@]@\n" t System.pr_mem_status oldmem System.pr_mem_status newmem;
- end;
- if i >= count then r
- else loop (i+1)
- in
- loop 1
-;;
-
module Timing =
struct
let _timings = Hashtbl.create 43
om, nm))
(infinity, 0., 0., 0, h, h) l
in
- Logger.verbose fmt "@[%s%s: [" sub msg;
- Format.pp_open_vbox fmt (2 + String.length msg + String.length sub);
- Logger.verbose fmt
- "@\n\
+ Logger.start_msg fmt "[Stats] ";
+ Logger.msg fmt "%s %s:@\n @[<v 0>[" sub msg;
+ begin
+ if len <= 1 then
+ Logger.msg fmt
+ "@\n\
+| Time: %fms@\n"
+ tmin
+ else
+ Logger.msg fmt
+ "@\n\
| Number of runs: %i@\n\
| Average time: %fms@\n\
| Minimum time: %fms@\n\
-| Maximum time: %fms@\n\
-| Memory before: %a@\n\
-| Memory after: %a@\n]@]@]@\n"
- len
- (ttotal /. (float_of_int len))
- tmin
- tmax
+| Maximum time: %fms@\n"
+ len
+ (ttotal /. (float_of_int len))
+ tmin
+ tmax
+
+ end;
+ Logger.msg fmt
+"| Memory before: %a@\n\
+| Memory after: %a@\n]@]"
System.pr_mem_status memo
- System.pr_mem_status memn
+ System.pr_mem_status memn;
+ Logger.end_msg fmt "\n\n"
let time f ?(count=1) ?(msg="") x =
Queue.clear _t_queue;
List.iter (fun msg' ->
let sub =
- if msg' <> msg then "(sub-timing) " else ""
+ if msg' <> msg then "+" else "="
in
display_result Format.err_formatter msg' sub (get_timing msg')) pr_stack;
end;