4个稳定版本

1.3.4 2020年8月5日
1.3.2 2020年8月4日
1.3.1 2020年8月3日

性能分析 类别中排名 125

Download history 74/week @ 2024-03-13 75/week @ 2024-03-20 81/week @ 2024-03-27 82/week @ 2024-04-03 81/week @ 2024-04-10 89/week @ 2024-04-17 167/week @ 2024-04-24 87/week @ 2024-05-01 81/week @ 2024-05-08 77/week @ 2024-05-15 90/week @ 2024-05-22 94/week @ 2024-05-29 85/week @ 2024-06-05 76/week @ 2024-06-12 91/week @ 2024-06-19 73/week @ 2024-06-26

每月下载量 339
7 个Crates中使用(其中3个直接使用)

MIT 许可协议

6MB
251

包含 (静态库,3.5MB) external/lib/x64/OptickCore_MT.lib,(静态库,2.5MB) external/lib/x64/OptickCore_MD.lib

Rust API for Optick Profiler

Build Status Crates.io Docs

支持平台

Windows (x64) Linux MacOS
否(进行中) 否(进行中)

如何使用

Cargo.toml 中添加

[dependencies]
optick = "1.3.4"

示例 1(通用应用程序、自动化等)

fn calc(n: u32) {
	// Profile current scope (automatically extracts current function name)
	// You could also specify a custom name if needed - e.g. optick::scope!("calc");
	optick::event!();

	// Attach custom data tag to the capture (i32, u32, u64, f32, str, vec3)
	optick::tag!("number", n);
	optick::tag!("name", "Bob");
	optick::tag!("position", (10.0f32, -12.0f32, 14.0f32));

	...
}

pub fn main() {
	// Start a new capture
	optick::start_capture();

	calc(42);
	
	// Stop and save current capture to {working_dir}/capture_name(date-time).opt
	optick::stop_capture("capture_name"); 
}

示例 2(游戏)

fn update(frame_num: u32) {
    optick::event!();
    optick::tag!("frame", frame_num);
    std::thread::sleep(std::time::Duration::from_millis(33));
}

pub fn main() {
    let mut frame = 0; 
    loop {
        optick::next_frame();
        update(frame);
        frame = frame + 1;
    }
}

GUI

使用Optick GUI打开保存的 *.opt 捕获文件以进行进一步分析: https://github.com/bombomby/optick/releases
下载最新可用的 Optick_vX.X.X.zip => 运行 Optick.exe。

视频教程(功能概述)

Vide Tutorial

过程宏

Optick支持一系列过程宏,用于简化代码标记的过程: https://crates.io/crates/optick-attr

// Instrument current function
#[optick_attr::profile]
fn calc() {
    // Do some stuff
}
//Generate performance capture for function to {working_dir}/capture_name(date-time).opt.
#[optick_attr::capture("capture_name")]
pub fn main() {
    calc();
}

功能标志

  • enable - 此标志默认启用并启用Optick仪表

以管理员身份运行以收集ETW事件

Optick使用ETW收集硬件计数器:切换上下文、自动采样、CPU核心利用率等。以管理员身份运行您的应用程序以启用ETW事件的收集

Start-Process cargo run -Verb runAs

无运行时依赖