In Cargo.toml
add:
toml
[dependencies]
optick = "1.3.1"
optick_attr = "0.1.0"
Instrument function. Example: ```rust
fn fibonacci(n: u32) -> u32 { let res = match n { 0 => 1, 1 => 1, _ => fibonacci(n - 1) + fibonacci(n - 2), }; return res; } ```
Generate performance capture for function. Capture is saved to {workingdir}/capturename(date-time).opt. Example: ```rust
pub fn main() { fibonacci(10); } ```
Use Optick GUI to open saved *.opt capture for further analysis: https://github.com/bombomby/optick/releases
Based and fully compatible with Rust Optick API.
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