optick-attr 0.1.0

Super lightweight performance profiler: function attributes
Documentation

Rust procedural macro library for Optick Profiler

How to use

In Cargo.toml add:

[dependencies]
optick = "1.3.1"
optick_attr = "0.1.0"

#[optick_attr::profile]

Instrument function. Example:

#[optick_attr::profile]
fn fibonacci(n: u32) -> u32 {
    let res = match n {
        0 => 1,
        1 => 1,
        _ => fibonacci(n - 1) + fibonacci(n - 2),
    };
    return res;
}

#[optick_attr::capture("capture_name")]

Generate performance capture for function. Capture is saved to {working_dir}/capture_name(date-time).opt. Example:

#[optick_attr::capture("capture_name")]
pub fn main() {
    fibonacci(10);
}

GUI

Use Optick GUI to open saved *.opt capture for further analysis: https://github.com/bombomby/optick/releases

Optick API

Based and fully compatible with Rust Optick API.

Run as Administartor to collect ETW events

Optick uses ETW to collect hardware counters: switch-contexts, auto-sampling, CPU core utilization, etc. Run your app as administrator to enable the collection of ETW events:

Start-Process cargo run -Verb runAs