22 个版本 (12 个稳定版)
12.0.0 | 2024年5月31日 |
---|---|
11.0.1 | 2024年1月13日 |
11.0.0 | 2023年12月18日 |
10.1.3 | 2024年5月30日 |
0.1.0 | 2019年3月14日 |
#14 在 性能分析 中
每月下载 82,519 次
用于 52 个crate(9 个直接使用)
105KB
2K SLoC
此crate提供了一个用于高性能事件跟踪的库,该库被Rust编译器的非稳定功能 -Z self-profile
使用。
跟踪会话的输出将是一个包含事件流和字符串表的 .mm_profdata
文件,该字符串表允许解码事件流中的 StringId
。
编写事件跟踪文件
编写事件跟踪文件的主要入口点是 Profiler
结构。
要创建一个 Profiler
,请调用 [Profiler::new()
] 函数,并提供一个 Path
,其中包含跟踪文件的目录和文件名。或者,调用 [Profiler::with_counter()
] 函数,选择分析器将用于事件的 Counter
(而 [Profiler::new()
] 默认为 wall-time
)。
有关可用的计数器的更多信息,请参阅 counters
模块文档。
要记录事件,请调用 [Profiler::record_instant_event()
] 方法,传递一些参数
此外,事件还可以通过 [Profiler::start_recording_interval_event()
] 方法记录。此方法记录一个“开始”事件,并返回一个将在其释放时自动记录相应“结束”事件的 TimingGuard
对象。
要创建一个 StringId
,调用以下字符串分配方法之一
- [
Profiler::alloc_string()
]:分配一个字符串并返回指向它的StringId
依赖关系
~0.4–5.5MB
~15K SLoC