Expand description


fn main() {
    puffin::set_scopes_on(true); // you may want to control this with a flag

    // game loop
    loop {




Returns a shortened path to the current file.

Returns the name of the calling function without a long module path prefix.

Automatically name the profiling scope based on function name.

Profile the current scope with the given name (unique in the parent scope).


One frame worth of profile data, collected from many sources.

Meta-information about a frame.

Identifies a specific FrameSink when added to GlobalProfiler.

A view of recent and slowest frames, used by GUIs.

Automatically connects to crate::GlobalProfiler.

Singleton. Collects profiling data from multiple threads and passes them on to different FrameSinks.

A scope that has been merged from many different sources

Created by the puffin::profile*!(...) macros.

Parses a Stream of profiler data.

Used when parsing a Stream.

Used when parsing a Stream.

Stream of profiling events from one thread.

A Stream plus some info about it.

A reference to the contents of a StreamInfo.

Used to identify one source of profiling data.

Collects profiling data for one thread

One frame worth of profile data, collected from many sources.


Errors that can happen when parsing a Stream of profile data.


Are the profiler scope macros turned on? This is false by default.

Report a stream of profile data from a thread to the GlobalProfiler singleton.

For the given thread, merge all scopes with the same id path.

Returns a high-precision, monotonically increasing nanosecond count since unix epoch.

Select the slowest frames, up to a certain count.

Turn on/off the profiler macros (profile_function, profile_scope etc). When off, these calls take only 1-2 ns to call (100x faster). This is false by default.

Type Definitions

All times are expressed as integer nanoseconds since some event.