NewProfile
module MiniJson : sig ... end
module Counters : sig ... end
val profile : string -> ?args:(unit -> (string * MiniJson.t) list) -> (unit -> 'a) -> unit -> 'a
Profile the given function.
args
is called only if profiling is active, it is used to produce additional annotations.
val init : settings -> unit
Profiling must not be active. Activates profiling with a fresh state.
val pause : unit -> accu option
Returns None
if profiling is inactive. Deactivates profiling if it is active, returning the current state.
val resume : accu -> unit
Profiling must not be active. Activates profiling with the given state.
type sums = (float * int) CString.Map.t
Timings for sub-events: for each event, how long it took and how many times it was called.
val empty_sums : sums
val with_profiling : (unit -> 'a) -> MiniJson.t list * sums * 'a
Runs the given function with profiling active and returns the produced events and sum times of subevents.
val insert_results : MiniJson.t list -> sums -> unit
Profiling must be active. Outputs the given events and includes the sum times in the current event.
Pretty print a time given in seconds using smaller units as needed.
Custom outputs
Output footer for profile files and flushes the formatter.