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 three files:
.eventsfile which contains all of the traced events.
.string_datafile which contains all the strings referenced by events.
.string_indexfile which maps
StringIdvalues to offsets into the
The main entry point for writing event trace files is the
To create a
Profiler, call the
Profiler::new() function and provide a
the directory and file name for the trace files.
Alternatively, call the
Profiler::with_counter() function, to choose the
the profiler will use for events (whereas
Profiler::new() defaults to
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
StringIdwhich assigns an arbitrary category to the event
StringIdwhich specifies the name of the event
u32id 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
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:
Profiling counters and their implementation.
All binary files generated by measureme have a simple file header that consists of a 4 byte file magic string and a 4 byte little-endian version number.
This module contains functionality specific to to the measureme integration with rustc
A string table implementation with a tree-like encoding.
An address within a data stream. Each data stream has its own address space,
i.e. the first piece of data written to the events stream will have
When dropped, this
The max instant counter value we can represent with the 48 bits available.
The max interval counter value we can represent with the 48 bits available.
The highest value is reserved for the
This function reconstructs the individual data streams from their paged version.