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 -- barmodule Sync_or_async : sig ... endA
Sync_or_async.tspecifies 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) -> 'aprofile sync_or_async message fmeasures the time taken to runf, and outputs the result. Nested calls to profile are displayed as a tree. UseAsyncto profile Async code. It is safe to nest calls toprofileinside calls toprofile Async.profile Asyncdoes have some restrictions in order to get valid results:- a nested call to
profile Asyncmust exit before its parent does - there cannot be multiple sibling calls to
profile Asyncrunning concurrently
- a nested call to
val approximate_line_length_limit : int Core_kernel.refval should_profile : bool Core_kernel.refval hide_if_less_than : Core_kernel.Time_ns.Span.t Core_kernel.refval hide_top_level_if_less_than : Core_kernel.Time_ns.Span.t Core_kernel.refval sexp_of_time_ns : (Core_kernel.Time_ns.t -> Core_kernel.Sexp.t) Core_kernel.refval tag_frames_with : (unit -> Core_kernel.Sexp.t option) option Core_kernel.refval output_profile : (string -> unit) Core_kernel.refprofilecallsoutput_profileto display the profile to the user. It isprint_stringby default.
module Start_location : sig ... endval start_location : Start_location.t Core_kernel.refstart_locationspecifies where in a profile the start time is rendered.
val backtrace : unit -> Core_kernel.Sexp.t list optionReturn the current stack of
profilemessages, sorted inner profile frames first. ReturnsNoneifshould_profileis false.
module Private : sig ... end