From: kim Date: Sun, 17 May 2009 07:22:43 +0000 (+0000) Subject: Added debugging messages X-Git-Url: http://git.nguyen.vg/gitweb/?a=commitdiff_plain;h=cfd834dcdee634387ad2354f1382eeb9d816be45;p=SXSI%2Fxpathcomp.git Added debugging messages git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/xpathcomp@392 3cdefd35-fc62-479d-8e8d-bae585ffb9ca --- diff --git a/main.ml b/main.ml index c9885e6..7418fa1 100644 --- 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 --- 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 diff --git a/utils.ml b/utils.ml index cfa6c8e..ce99932 100644 --- 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__ *)