22 releases (12 stable)
12.0.0 | May 31, 2024 |
---|---|
11.0.1 | Jan 13, 2024 |
11.0.0 | Dec 18, 2023 |
10.1.3 | May 30, 2024 |
0.1.0 | Mar 14, 2019 |
#12 in Profiling
90,692 downloads per month
Used in 67 crates
(10 directly)
105KB
2K
SLoC
This crate provides a library for high-performance event tracing which is used by
the Rust compiler's unstable -Z self-profile
feature.
The output of a tracing session will be an .mm_profdata
file containing a stream
of events and a string table that allows to decode the StringId
s in the event stream.
Writing event trace files
The main entry point for writing event trace files is the Profiler
struct.
To create a Profiler
, call the [Profiler::new()
] function and provide a Path
with
the directory and file name for the trace files.
Alternatively, call the [Profiler::with_counter()
] function, to choose the Counter
the profiler will use for events (whereas [Profiler::new()
] defaults to wall-time
).
For more information on available counters, see the counters
module documentation.
To record an event, call the [Profiler::record_instant_event()
] method, passing a few
arguments:
event_kind
: aStringId
which assigns an arbitrary category to the eventevent_id
: aStringId
which specifies the name of the eventthread_id
: au32
id of the thread which is recording this event
Alternatively, events can also be recorded via the
[Profiler::start_recording_interval_event()
] method. This method records a "start" event and
returns a TimingGuard
object that will automatically record the corresponding "end" event
when it is dropped.
To create a StringId
, call one of the string allocation methods:
- [
Profiler::alloc_string()
]: allocates a string and returns theStringId
that refers to it
Dependencies
~0.4–5MB
~15K SLoC