-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
-;;
-