Added debugging messages
authorkim <kim@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Sun, 17 May 2009 07:22:43 +0000 (07:22 +0000)
committerkim <kim@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Sun, 17 May 2009 07:22:43 +0000 (07:22 +0000)
git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/xpathcomp@392 3cdefd35-fc62-479d-8e8d-bae585ffb9ca

main.ml
tree.ml
utils.ml

diff --git a/main.ml b/main.ml
index c9885e6..7418fa1 100644 (file)
--- a/main.ml
+++ b/main.ml
@@ -6,24 +6,20 @@
 (******************************************************************************)
 
 open Ata
+INCLUDE "utils.ml"
+let () = init_timer();;
 
-let l = ref [] ;;
-let time f x =
-  let t1 = Unix.gettimeofday () in
-  let r = f x in
-  let t2 = Unix.gettimeofday () in 
-  let t = (1000. *. (t2 -. t1)) in
-    l:= t::!l;
-    Printf.eprintf "  %fms\n%!" t ;
-    r
-;;
-let total_time () =  List.fold_left (+.) 0. !l;;
 let enabled_gc = Gc.get()
 let disabled_gc = { Gc.get() with
                      Gc.max_overhead = 1000000; 
                      Gc.space_overhead = 100 }
 
+
+
+
+
 let main v query_string output =
+  
     let _ = Tag.init (Tree.tag_pool v) in
       Printf.eprintf "Parsing query : ";    
       let query = try
@@ -122,7 +118,7 @@ let main v query_string output =
 
 Options.parse_cmdline();;
 
-let v = 
+let v =
   if (Filename.check_suffix !Options.input_file ".srx")
   then 
     begin
diff --git a/tree.ml b/tree.ml
index 730e174..24fca56 100644 (file)
--- a/tree.ml
+++ b/tree.ml
@@ -358,6 +358,7 @@ let load ?(sample=64) str =
   let fd = Unix.openfile str [ Unix.O_RDONLY ] 0o644 in
   let in_c = Unix.in_channel_of_descr fd in
   let _ = set_binary_mode_in in_c true in
+  let load_table () = 
     (let ms = input_line in_c in if ms <> magic_string then failwith "Invalid index file");
     (let vs = input_line in_c in if vs <> version_string then failwith "Invalid version file");
     let table : (Tag.t,(Ptset.Int.t*Ptset.Int.t*Ptset.Int.t*Ptset.Int.t)) Hashtbl.t =
@@ -375,11 +376,15 @@ let load ?(sample=64) str =
       (* The in_channel read a chunk of fd, so we might be after
         the start of the XMLTree save file. Reset to the correct
         position *)
-      ignore(Unix.lseek fd (pos_in in_c) Unix.SEEK_SET);
-      let tree = { doc = tree_load fd;
-                  ttable = ntable;}
-      in close_in in_c;
-       tree
+      ntable
+  in
+  let _ = Printf.eprintf "\nLoading tag table : " in
+  let ntable = time (load_table) () in
+  ignore(Unix.lseek fd (pos_in in_c) Unix.SEEK_SET);
+  let tree = { doc = tree_load fd;
+              ttable = ntable;}
+  in close_in in_c;
+  tree
   
 
 
index cfa6c8e..ce99932 100644 (file)
--- a/utils.ml
+++ b/utils.ml
@@ -46,4 +46,42 @@ DEFINE MED_H_SIZE    = PRIME5
 DEFINE BIG_H_SIZE    = PRIME8
 
 
+
+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 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 "Mem use after: %s\n\n\n%!" s2;
+    r
+;;
+let total_time () =  List.fold_left (+.) 0. !l;;
+
 END (* IFNDEF UTILS__ML__ *)