X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fextlib%2FhExtlib.ml;h=b36a4d89db2630f5d0d192454f706d86fa1054d3;hb=8abfe27fa567230a897c5c622601698ba261adf0;hp=ded11b9fea412d5e8c917bf6fb79ebf4fb89b926;hpb=c5df154c421b761c227b163ea345a499dd081e75;p=helm.git diff --git a/helm/software/components/extlib/hExtlib.ml b/helm/software/components/extlib/hExtlib.ml index ded11b9fe..b36a4d89d 100644 --- a/helm/software/components/extlib/hExtlib.ml +++ b/helm/software/components/extlib/hExtlib.ml @@ -27,14 +27,20 @@ (** PROFILING *) -let profiling_enabled = ComponentsConf.profiling +let profiling_enabled = false ;; (* ComponentsConf.profiling *) + +let something_profiled = ref false let _ = - if profiling_enabled then + if !something_profiled then at_exit - (fun _ -> prerr_endline - (Printf.sprintf "!! %-39s %6s %9s %9s %9s" - "function" "#calls" "total" "max" "average")) + (fun _ -> + prerr_endline + (Printf.sprintf "!! %39s ---------- --------- --------- ---------" + (String.make 39 '-')); + prerr_endline + (Printf.sprintf "!! %-39s %10s %9s %9s %9s" + "function" "#calls" "total" "max" "average")) let profiling_printings = ref (fun _ -> true) let set_profiling_printings f = profiling_printings := f @@ -65,10 +71,13 @@ let profile ?(enable = true) s = in at_exit (fun () -> - if !profiling_printings s && !total <> 0. then + if !profiling_printings s && !calls <> 0 then + begin + something_profiled := true; prerr_endline - (Printf.sprintf "!! %-39s %6d %9.4f %9.4f %9.4f" - s !calls !total !max (!total /. (float_of_int !calls)))); + (Printf.sprintf "!! %-39s %10d %9.4f %9.4f %9.4f" + s !calls !total !max (!total /. (float_of_int !calls))) + end); { profile = profile } else { profile = fun f x -> f x } @@ -126,6 +135,10 @@ let is_alphanum c = is_alpha c || is_digit c (** {2 List processing} *) +let flatten_map f l = + List.flatten (List.map f l) +;; + let rec list_uniq ?(eq=(=)) = function | [] -> [] | h::[] -> [h] @@ -356,3 +369,7 @@ let raise_localized_exception ~offset floc exn = { flocb with Lexing.pos_cnum = x }, { floce with Lexing.pos_cnum = y } in raise (Localized (floc, exn)) + +let estimate_size x = + 4 * (String.length (Marshal.to_string x [])) / 1024 +