diff options
author | Hugo Herbelin <Hugo.Herbelin@inria.fr> | 2014-07-03 12:43:28 +0200 |
---|---|---|
committer | Hugo Herbelin <Hugo.Herbelin@inria.fr> | 2014-07-07 21:30:18 +0200 |
commit | abad0a15ac44cb5b53b87382bb4d587d9800a0f6 (patch) | |
tree | accb7680bdff39d8e9233f30c0fe8990eddac2a6 /lib | |
parent | 8e767acc26cb2335f1a8dac3c4c184e2cc0b64c4 (diff) |
time tac
Diffstat (limited to 'lib')
-rw-r--r-- | lib/system.ml | 16 | ||||
-rw-r--r-- | lib/system.mli | 2 |
2 files changed, 18 insertions, 0 deletions
diff --git a/lib/system.ml b/lib/system.ml index 6c357ee36..4188eb2b4 100644 --- a/lib/system.ml +++ b/lib/system.ml @@ -279,3 +279,19 @@ let fmt_time_difference (startreal,ustart,sstart) (stopreal,ustop,sstop) = str "," ++ real (round (sstop -. sstart)) ++ str "s" ++ str ")" + +let with_time time f x = + let tstart = get_time() in + let msg = if time then "" else "Finished transaction in " in + try + let y = f x in + let tend = get_time() in + let msg2 = if time then "" else " (successful)" in + msg_info (str msg ++ fmt_time_difference tstart tend ++ str msg2); + y + with e -> + let tend = get_time() in + let msg = if time then "" else "Finished failing transaction in " in + let msg2 = if time then "" else " (failure)" in + msg_info (str msg ++ fmt_time_difference tstart tend ++ str msg2); + raise e diff --git a/lib/system.mli b/lib/system.mli index 2e286a40c..9cfb1456f 100644 --- a/lib/system.mli +++ b/lib/system.mli @@ -67,3 +67,5 @@ type time val get_time : unit -> time val time_difference : time -> time -> float (** in seconds *) val fmt_time_difference : time -> time -> Pp.std_ppcmds + +val with_time : bool -> ('a -> 'b) -> 'a -> 'b |