package ecaml
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=89f2806dd37012b07ddbaf40c2d9cfb9de29289944d921d23f4fd9b93d5c7cba
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 -- barmodule Sync_or_async : sig ... endA Sync_or_async.t specifies whether the computation being profiled is synchronous or asynchronous.
val profile :
?hide_if_less_than:Core.Time_ns.Span.t ->
'a Sync_or_async.t ->
Core.Sexp.t Core.Lazy.t ->
(unit -> 'a) ->
'aprofile 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 Asyncmust exit before its parent does - there cannot be multiple sibling calls to
profile Asyncrunning concurrently
am_forcing_message () returns true when profiling is calling force on a message supplied to profile. This is useful if you want to have a sexp_of_t function behave differently when producing messages.
val approximate_line_length_limit : int Core.refval should_profile : bool Core.refval hide_if_less_than : Core.Time_ns.Span.t Core.refval hide_top_level_if_less_than : Core.Time_ns.Span.t Core.refval never_show_rendering_took : bool Core.refval sexp_of_time_ns : (Core.Time_ns.t -> Core.Sexp.t) Core.refval tag_frames_with : (unit -> Core.Sexp.t option) option Core.refval output_profile : (string -> unit) Core.refprofile calls output_profile to display the profile to the user. It is print_string by default.
module Start_location : sig ... endval start_location : Start_location.t Core.refstart_location specifies where in a profile the start time is rendered.
val backtrace : unit -> Core.Sexp.t list optionReturn the current stack of profile messages, sorted inner profile frames first. Returns None if should_profile is false.
disown f runs f as though it were at top level, rather than whatever the current context is. In other words, it causes the parent (current) context to disown children created by f. This is useful for background jobs that might outlive their parents, since Nested_profile requires that parents wait for their children.
module Private : sig ... end