Module 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 is_profiling : unit -> bool
type settings = {
output : Stdlib.Format.formatter;
fname : string;
}
val init : settings -> unit

Profiling must not be active. Activates profiling with a fresh state.

val finish : unit -> unit

Profiling must be active. Deactivates profiling.

type accu

Profiling state accumulator.

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 sums_union : sums -> 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.

val pptime : Stdlib.Format.formatter -> float -> unit

Pretty print a time given in seconds using smaller units as needed.

Custom outputs

val format_header : Stdlib.Format.formatter -> unit

Output header for profile files

Output footer for profile files and flushes the formatter.