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
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. *)
|