let read_procmem () =
let pid = Unix.getpid() in
let cin = open_in (Printf.sprintf "/proc/%i/status" pid) in
- let pattern = "VmHWM" in
+ let pattern = "VmStk" in
let matchline s = let l = String.length pattern in
if (String.length s) < l then false
else let s' = String.sub s 0 l in
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.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;
r
;;
let time f ?(count=1) ?(msg="") x =
let rec loop i =
Gc.compact();
+ let oldstack = read_procmem () in
let t1 = Unix.gettimeofday () 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" t;
+ Logger.print 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";
+ (*Logger.print Format.err_formatter "@\n"; *)
r
;;
let total_time () = List.fold_left (+.) 0. !l;;
v+1
external vb : bool -> int = "%identity"
-
+let compare_int x y = vb (x > y) - vb (x < y)
+let compare_int_unsafe x y = x - y
END (* IFNDEF UTILS__ML__ *)