Crate measureme[−][src]
Expand description
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:
- A
.events
file which contains all of the traced events. - A
.string_data
file which contains all the strings referenced by events. - A
.string_index
file which mapsStringId
values to offsets into the.string_data
file.
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
Re-exports
pub use crate::event_id::EventId; | |
pub use crate::event_id::EventIdBuilder; | |
pub use crate::stringtable::SerializableString; | |
pub use crate::stringtable::StringComponent; | |
pub use crate::stringtable::StringId; | |
pub use crate::stringtable::StringTableBuilder; |
Modules
counters | Profiling counters and their implementation. |
event_id | |
file_header | 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. |
rustc | This module contains functionality specific to to the measureme integration with rustc |
stringtable | A string table implementation with a tree-like encoding. |
Structs
Addr | 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
|
DetachedTiming | Created by |
Profiler | |
RawEvent |
|
SerializationSink | |
SerializationSinkBuilder | |
TimingGuard | When dropped, this |
Enums
PageTag |
Constants
MAX_INSTANT_TIMESTAMP | The max instant counter value we can represent with the 48 bits available. |
MAX_INTERVAL_TIMESTAMP | The max interval counter value we can represent with the 48 bits available.
The highest value is reserved for the |
Functions
split_streams | This function reconstructs the individual data streams from their paged version. |