You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.6 KiB

(*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*)
(** Timers for runtime statistics *)
type t = private
{ mutable ustart: float
; mutable sstart: float
; mutable uaggregate: float
; mutable saggregate: float
; mutable count: int
; mutable max: float
; mutable threshold: float
; name: string }
val create :
?at_exit:
( name:string
-> elapsed:float
-> aggregate:float
-> count:int
-> unit)
-> string
-> t
(** Construct a timer with the given name and register the given function to
run at exit. The [at_exit] function receives [name]: the name of the
timer passed to [create], [elapsed]: the number of milliseconds between
the longest single [start]-[stop] pair, [aggregate]: the sum of the time
that elapsed while the named timer was running, [count]: the number of
times [stop] was called on the timer. *)
val start : t -> unit
(** Start a timer. *)
val stop : t -> unit
(** Stop a timer. *)
val stop_report :
t
-> (name:string -> elapsed:float -> aggregate:float -> count:int -> unit)
-> unit
(** Stop a timer and report using the given function, which receives [name]:
the name of the timer passed to [create], [elapsed]: the number of
milliseconds since [start] was called, [aggregate]: the sum of the time
that has elapsed while the timer was running, [count]: the number of
times [stop] has been called on the timer. *)
val enabled : bool ref
(** Timers do nothing unless [enabled] is set. *)