Module Landmark
module Graph : sig ... end
All about exporting profiling results
external clock : unit -> Stdlib.Int64.t = "caml_highres_clock"
This function is used by the landmark infrastructure to measure the number of cycles inside landmarks.
Landmarks
val register : ?location:string -> string -> landmark
register name
registers a new landmark. Should always be called at top-level.
val enter : landmark -> unit
Begins a landmark block. /!\ Landmark blocks should be well-nested, otherwise a failure will be raised during profiling.
val exit : landmark -> unit
Ends a landmark block.
val wrap : landmark -> ('a -> 'b) -> 'a -> 'b
Puts landmark blocks around a function (and close the block and re-raise in case of uncaught exception).
val unsafe_wrap : landmark -> ('a -> 'b) -> 'a -> 'b
Puts landmark blocks around a function without catching exceptions.
Counter and samplers
val register_counter : string -> counter
register_counter name
registers a new counter. Should always be called at top-level.
val increment : ?times:int -> counter -> unit
Increments the number of calls attached to the counter.
val register_sampler : string -> sampler
register_counter name
registers a new sampler.
val sample : sampler -> float -> unit
Collects a float.
Manage profiling
type profile_output
=
Where to output results.
type textual_option
=
{
threshold : float;
}
type profile_format
=
|
JSON
Easily parsable export format.
|
Textual of textual_option
Console friendly output; nodes below the threshold (0.0 <= threshold <= 100.0) are not displayed in the callgraph.
The output format for the results.
type profiling_options
=
{
debug : bool;
Activates a verbose mode that outputs traces on stderr each time the landmarks primitives are called. Default: false.
allocated_bytes : bool;
Also collect
Gc
.allocated_bytes during profiling.sys_time : bool;
Also collect
Sys
.time timestamps during profiling.recursive : bool;
When false, the recursive instances of landmarks (entering a landmark that has already been entered) are ignored (the number of calls is updated but it does not generate a new node in the callgraph).
output : profile_output;
Specify where to output the results.
format : profile_format;
Specify the output format.
}
The profiling options control the behavior of the landmark infrastructure.
val default_options : profiling_options
The default
profiling_options
.
val set_profiling_options : profiling_options -> unit
Sets the options.
val profiling_options : unit -> profiling_options
Get the options.
val start_profiling : ?profiling_options:profiling_options -> unit -> unit
Starts the profiling.
val export : ?label:string -> unit -> Graph.graph
Export the profiling information of the current process.
val export_and_reset : ?label:string -> unit -> Graph.graph
Export the profiling information of the current process; then reset internal state.
val merge : Graph.graph -> unit
Aggregate the profiling information (exported by another process) to the current one. This should is used by the master process to merge exported profiles of workers.