package ecaml
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=20de8c606f4d0aea48c9353d1202c388fdd5d9faecb22799e46b5e2f2f8a4458
md5=4f58053a70cb5be73c8d98abacaab3a9
doc/ecaml.nested_profile/Nested_profile/Profile/index.html
Module Nested_profile.Profile
This is a library for time profiling sequential or Async code.
Wrap interesting places in your code with calls to profile
:
open! Nested_profile;;
profile "do_thing" (fun () ->
profile "foo" foo;
profile "bar" bar;
...)
Then each top-level call to profile
will output a hierarchical display of all profile calls beneath it:
1.284s -- do_thing 209.266ms -- foo 1.074s -- bar
module Sync_or_async : sig ... end
A Sync_or_async.t
specifies whether the computation being profiled is synchronous or asynchronous.
val profile :
?hide_if_less_than:Core_kernel.Time_ns.Span.t ->
'a Sync_or_async.t ->
Core_kernel.Sexp.t Core_kernel.Lazy.t ->
(unit -> 'a) ->
'a
profile sync_or_async message f
measures the time taken to run f
, and outputs the result. Nested calls to profile are displayed as a tree. Use Async
to profile Async code. It is safe to nest calls to profile
inside calls to profile Async
. profile Async
does have some restrictions in order to get valid results:
- a nested call to
profile Async
must exit before its parent does - there cannot be multiple sibling calls to
profile Async
running concurrently
val approximate_line_length_limit : int Core_kernel.ref
val should_profile : bool Core_kernel.ref
val hide_if_less_than : Core_kernel.Time_ns.Span.t Core_kernel.ref
val hide_top_level_if_less_than : Core_kernel.Time_ns.Span.t Core_kernel.ref
val sexp_of_time_ns :
(Core_kernel.Time_ns.t -> Core_kernel.Sexp.t) Core_kernel.ref
val tag_frames_with :
(unit -> Core_kernel.Sexp.t option) option Core_kernel.ref
val output_profile : (string -> unit) Core_kernel.ref
profile
calls output_profile
to display the profile to the user. It is print_string
by default.
module Start_location : sig ... end
val start_location : Start_location.t Core_kernel.ref
start_location
specifies where in a profile the start time is rendered.
val backtrace : unit -> Core_kernel.Sexp.t list option
Return the current stack of profile
messages, sorted inner profile frames first. Returns None
if should_profile
is false.
module Private : sig ... end