Running a program with offline metrics collection causes it to write out a data file
on exit. This data file is typically called profiler.dat
. The collected metrics can
then be analyzed using profiler-tool.exe
.
I don't trust these numbers, but here they are:
┌──────────────────────────────────────────────────────┬──────────┬────────────┐ │ Name │ Time/Run │ Percentage │ ├──────────────────────────────────────────────────────┼──────────┼────────────┤ │ [offline.ml:Timer] at │ 18.29ns │ 10.34% │ │ [offline.ml:Probe] at │ 21.92ns │ 12.38% │ │ [offline.ml:Delta_timer] start_async │ 10.94ns │ 6.18% │ │ [offline.ml:Delta_timer] stop_async │ 22.78ns │ 12.87% │ │ [offline.ml:Delta_timer] start │ 11.23ns │ 6.34% │ │ [offline.ml:Delta_timer] stop │ 22.84ns │ 12.91% │ │ [offline.ml:Delta_timer.wrap_sync] nop │ 2.45ns │ 1.38% │ │ [offline.ml:Delta_timer.wrap_sync] wrapped_nop │ 40.59ns │ 22.93% │ │ [offline.ml:Delta_timer.wrap_sync] count_256 │ 143.57ns │ 81.12% │ │ [offline.ml:Delta_timer.wrap_sync] wrapped_count_256 │ 176.99ns │ 100.00% │ │ [offline.ml:Delta_probe] start │ 2.47ns │ 1.40% │ │ [offline.ml:Delta_probe] stop │ 22.11ns │ 12.49% │ │ [offline.ml:Delta_probe] start_async │ 2.44ns │ 1.38% │ │ [offline.ml:Delta_probe] stop_async │ 22.20ns │ 12.54% │ └──────────────────────────────────────────────────────┴──────────┴────────────┘
In Offline
, a Delta_probe
differs from a two point Group
in that for each
start/stop pair, only one message is written to the buffer. This means that only the
delta in the probe is available, as opposed to deltas in both probe and time.
module Profiler : sig ... end
module Timer : Core_profiler_disabled.Intf.Probe with type a create_args := a Core_profiler_disabled.Intf.timer_create_args and type a record_args := a Core_profiler_disabled.Intf.timer_record_args and type t = private int
A Timer
contains only a time stamp and no extra information; however, it is useful
because (in Offline
) the current time is recorded when measurements are made.
module Probe : Core_profiler_disabled.Intf.Probe with type a create_args := a Core_profiler_disabled.Intf.probe_create_args and type a record_args := a Core_profiler_disabled.Intf.probe_record_args and type t = private int
A Probe
records some integer value that is passed to at
along with a
timestamp.
module Delta_probe : sig ... end with type state = private int
Delta_probe
is an optimized two-probe group to track changes to some counter.
module Delta_timer : sig ... end with type state = private Core.Time_ns.t
Delta_timer
is an optimized two-probe group to track time differences between
calls to start
and stop
.