+++ /dev/null
-IFNDEF UTILS_ML__
-THEN
-DEFINE UTILS__ML__
-
-
-IFDEF WORDSIZE64
-THEN
- DEFINE WORDSIZE = 64
- DEFINE HALFWORDSIZE = 32
- DEFINE INTSIZE = 63
- DEFINE HALFINTSIZE = 31
- DEFINE HALF_MAX_INT = 2305843009213693951
- DEFINE HPARAM = 65599
- DEFINE HPARAM2 = 4303228801
- DEFINE HPARAM3 = 282287506116799
- DEFINE HPARAM4 = 71034040046345985
-ELSE
- DEFINE WORDSIZE = 32
- DEFINE HALFWORDSIZE = 16
- DEFINE INTSIZE = 31
- DEFINE HALFINTSIZE = 15
- DEFINE HALF_MAX_INT = 536870911
- DEFINE HPARAM = 65599
- DEFINE HPARAM2 = 8261505
- DEFINE HPARAM3 = 780587199
- DEFINE HPARAM4 = 549173308
-END
-
-
-DEFINE HASHINT2 (x,y) = ((x)+HPARAM*(y))
-DEFINE HASHINT3 (x,y,z) = ((x) + (y) * HPARAM + (z) * HPARAM2)
-DEFINE HASHINT4 (x,y,z,t) = ((x) + (y) * HPARAM + (z)*HPARAM2 + (t)* HPARAM3)
-DEFINE HASHINT5 (x,y,z,t,u) = ((x) + (y) * HPARAM + (z)*HPARAM2 + (t)* HPARAM3 + (u)*HPARAM4)
-
-DEFINE PRIME1 = 7
-DEFINE PRIME2 = 19
-DEFINE PRIME3 = 83
-DEFINE PRIME4 = 223
-DEFINE PRIME5 = 491
-DEFINE PRIME6 = 733
-DEFINE PRIME7 = 1009
-DEFINE PRIME8 = 4093
-DEFINE PRIME9 = 65599 (* Magic Constant used for hashing *)
-
-DEFINE SMALL_H_SIZE = PRIME2
-DEFINE MED_H_SIZE = PRIME5
-DEFINE BIG_H_SIZE = PRIME8
-
-DEFINE SMALL_A_SIZE = 128
-DEFINE MED_A_SIZE = 2048
-DEFINE BIG_A_SIZE = 8192
-
-
-let read_procmem () =
- let pid = Unix.getpid() in
- let cin = open_in (Printf.sprintf "/proc/%i/status" pid) in
- let pattern = "VmRSS" 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
- (s' = pattern)
- in
- let rec loop () =
- let s = input_line cin in
- if matchline s then s
- else loop ()
- in
- let s = try loop() with _ -> "Could not read mem!"
- in
- close_in cin;
- s
-;;
-
-let l = ref [] ;;
-let init_timer() = l := [];;
-let time_mem f x =
- let s1 = read_procmem() in
- let t1 = Unix.gettimeofday () in
- let r = f x in
- let s2 = read_procmem() in
- let t2 = Unix.gettimeofday () in
- let t = (1000. *. (t2 -. t1)) in
- l:= t::!l;
- Printf.eprintf " %fms\n%!" t ;
- Printf.eprintf "Mem use before: %s\n%!" s1;
- Printf.eprintf "Final Mem: %s\n\n\n%!" s2;
- r
-;;
-let time f ?(count=1) ?(msg="") x =
- let rec loop i =
- let t1 = Unix.gettimeofday () in
- let r = f x in
- let t2 = Unix.gettimeofday () in
- let t = (1000. *. (t2 -. t1)) in
- Printf.eprintf "%s: run %i/%i, %fms\n%!" msg i count t;
- if i >= count then (l:= t::!l;r)
- else loop (i+1)
- in loop 1
-;;
-let total_time () = List.fold_left (+.) 0. !l;;
-
-END (* IFNDEF UTILS__ML__ *)