(** PROFILING *)
-let profiling_enabled = false ;; (* ComponentsConf.profiling *)
+let profiling_enabled = ref false ;; (* ComponentsConf.profiling *)
let something_profiled = ref false
type profiler = { profile : 'a 'b. ('a -> 'b) -> 'a -> 'b }
let profile ?(enable = true) s =
- if profiling_enabled && enable then
+ if !profiling_enabled && enable then
let total = ref 0.0 in
let calls = ref 0 in
let max = ref 0.0 in
let profile f x =
+ if not !profiling_enabled then f x else
let before = Unix.gettimeofday () in
try
incr calls;
List.flatten (List.map f l)
;;
+let list_mapi f l =
+ let rec aux k = function
+ | [] -> []
+ | h::tl -> f h k :: aux (k+1) tl
+ in
+ aux 0 l
+;;
+
let rec list_uniq ?(eq=(=)) = function
| [] -> []
| h::[] -> [h]
try
if (Unix.stat path).Unix.st_kind = Unix.S_REG then path
else aux tl
- with Unix.Unix_error _ as exn ->
+ with Unix.Unix_error _ ->
aux tl
in
try