9 DEFINE HALFWORDSIZE = 32
11 DEFINE HALFINTSIZE = 31
12 DEFINE HALF_MAX_INT = 2305843009213693951
14 DEFINE HPARAM2 = 4303228801
15 DEFINE HPARAM3 = 282287506116799
16 DEFINE HPARAM4 = 71034040046345985
19 DEFINE HALFWORDSIZE = 16
21 DEFINE HALFINTSIZE = 15
22 DEFINE HALF_MAX_INT = 536870911
24 DEFINE HPARAM2 = 8261505
25 DEFINE HPARAM3 = 780587199
26 DEFINE HPARAM4 = 549173308
30 DEFINE HASHINT2 (x,y) = ((x)+HPARAM*(y))
31 DEFINE HASHINT3 (x,y,z) = ((x) + (y) * HPARAM + (z) * HPARAM2)
32 DEFINE HASHINT4 (x,y,z,t) = ((x) + (y) * HPARAM + (z)*HPARAM2 + (t)* HPARAM3)
33 DEFINE HASHINT5 (x,y,z,t,u) = ((x) + (y) * HPARAM + (z)*HPARAM2 + (t)* HPARAM3 + (u)*HPARAM4)
43 DEFINE PRIME9 = 65599 (* Magic Constant used for hashing *)
45 DEFINE SMALL_H_SIZE = PRIME2
46 DEFINE MED_H_SIZE = PRIME5
47 DEFINE BIG_H_SIZE = PRIME8
49 DEFINE SMALL_A_SIZE = 128
50 DEFINE MED_A_SIZE = 2048
51 DEFINE BIG_A_SIZE = 8192
55 let pid = Unix.getpid() in
56 let cin = open_in (Printf.sprintf "/proc/%i/status" pid) in
57 let pattern = "VmRSS" in
58 let matchline s = let l = String.length pattern in
59 if (String.length s) < l then false
60 else let s' = String.sub s 0 l in
64 let s = input_line cin in
68 let s = try loop() with _ -> "Could not read mem!"
75 let init_timer() = l := [];;
77 let s1 = read_procmem() in
78 let t1 = Unix.gettimeofday () in
80 let s2 = read_procmem() in
81 let t2 = Unix.gettimeofday () in
82 let t = (1000. *. (t2 -. t1)) in
84 Printf.eprintf " %fms\n%!" t ;
85 Printf.eprintf "Mem use before: %s\n%!" s1;
86 Printf.eprintf "Final Mem: %s\n\n\n%!" s2;
89 let time f ?(count=1) x =
91 let t1 = Unix.gettimeofday () in
93 let t2 = Unix.gettimeofday () in
94 let t = (1000. *. (t2 -. t1)) in
95 Printf.eprintf "run %i/%i, %fms\n%!" i count t;
96 if i >= count then (l:= t::!l;r)
100 let total_time () = List.fold_left (+.) 0. !l;;
102 END (* IFNDEF UTILS__ML__ *)