Crate puffin

Source
Expand description

Usage:

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

    // game loop
    loop {
        puffin::GlobalProfiler::lock().new_frame();

        {
            puffin::profile_scope!("slow_code");
            slow_code();
        }

    }
}

Re-exports§

pub use utils::clean_function_name;
pub use utils::short_file_name;
pub use utils::type_name_of;

Macros§

current_function_name
Returns the name of the calling function without a long module path prefix.
profile_function
Automatically name the profiling scope based on function name.
profile_function_if
Conditionally profile the current function.
profile_scope
Profile the current scope with the given name (unique in the parent scope).
profile_scope_custom
Profile the current scope with the given name (unique in the parent scope).
profile_scope_custom_if
Like profile_scope_custom, but only conditionally profiles the scope.
profile_scope_if
Like profile_scope, but only conditionally profiles the scope.

Structs§

FrameData
One frame worth of profile data, collected from many sources.
FrameMeta
Meta-information about a frame.
FrameSinkId
Identifies a specific FrameSink when added to GlobalProfiler.
FrameStats
Collect statistics for maintained frames
FrameView
A view of recent and slowest frames, used by GUIs.
GlobalFrameView
Automatically connects to crate::GlobalProfiler.
GlobalProfiler
Singleton. Collects profiling data from multiple threads and passes them on to different FrameSinks.
MergeScope
A scope that has been merged from many different sources
ProfilerScope
Created by the puffin::profile*!(...) macros.
Reader
TODO: Improve encapsulation. Parses a Stream of profiler data.
Scope
TODO: Improve encapsulation. Used when parsing a Stream.
ScopeCollection
A collection of scope details containing more information about a recorded profile scope.
ScopeDetails
Detailed information about a scope.
ScopeId
A unique id for each scope and ScopeDetails.
ScopeRecord
TODO: Improve encapsulation. Used when parsing a Stream.
Stream
TODO: Improve encapsulation. Stream of profiling events from one thread.
StreamInfo
TODO: Improve encapsulation. A Stream plus some info about it.
StreamInfoRef
TODO: Improve encapsulation. A reference to the contents of a StreamInfo.
ThreadInfo
Used to identify one source of profiling data.
ThreadProfiler
Collects profiling data for one thread
UnpackedFrameData
One frame worth of profile data, collected from many sources.

Enums§

Error
TODO: Improve encapsulation. Errors that can happen when parsing a Stream of profile data.
ScopeType
Scopes are identified by user-provided name while functions are identified by the function name.

Functions§

are_scopes_on
Are the profiler scope macros turned on? This is false by default.
internal_profile_reporter
Report a stream of profile data from a thread to the GlobalProfiler singleton. This is used for internal purposes only
merge_scopes_for_thread
For the given thread, merge all scopes with the same id+data path.
now_ns
Returns a high-precision, monotonically increasing nanosecond count since unix epoch.
select_slowest
Select the slowest frames, up to a certain count.
set_scopes_on
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.
shorten_rust_function_name
Shorten a rust function name by removing the leading parts of module paths.

Type Aliases§

FrameIndex
An incremental monolithic counter to identify frames.
FrameSink
Add these to GlobalProfiler with GlobalProfiler::add_sink().
NanoSecond
All times are expressed as integer nanoseconds since some event.
Result
TODO: Improve encapsulation. Custom puffin result type.