10个版本 (1个稳定版)
1.0.0 | 2024年8月11日 |
---|---|
0.11.0 | 2024年6月14日 |
0.10.0 | 2024年6月1日 |
0.9.0 | 2024年5月28日 |
0.5.1 | 2024年3月15日 |
#19 在 性能分析 中
每月 8,892 次下载
用于 4 包
290KB
6K SLoC
Criterion.rs
Criterion.rs 通过检测和测量性能改进或退化(即使是很小的变化),快速准确地帮助您编写快速代码。您可以有信心进行优化,了解每个更改如何影响您的代码性能。
分叉原因
criterion 是以过时的依赖被动维护的。
此分叉更新了
- renovate bot 依赖关系更新
- 内建 codspeed 功能
clap
替换为bpaf
以减小二进制文件大小和编译时间- 将
criterion-plot
包合并到criterion2
- 移除正则表达式过滤器支持以减少编译时间
目录
功能
- 统计:统计分析检测自上次基准测试运行以来性能是否以及如何改变
- 图表:使用 gnuplot 生成基准测试结果的详细图表
- 与稳定版兼容:无需安装夜间Rust即可基准测试您的代码
快速入门
为了生成图表,您必须安装 gnuplot。请参阅gnuplot网站以获取安装说明。有关最低支持的Rust版本的详细信息,请参阅兼容性策略。
要开始使用 Criterion.rs,请将以下内容添加到您的 Cargo.toml
文件中
[dev-dependencies]
criterion = { version = "0.4", features = ["html_reports"] }
[[bench]]
name = "my_benchmark"
harness = false
接下来,通过在 $PROJECT/benches/my_benchmark.rs
创建一个文件并包含以下内容来定义一个基准
use criterion::{black_box, criterion_group, criterion_main, Criterion};
fn fibonacci(n: u64) -> u64 {
match n {
0 => 1,
1 => 1,
n => fibonacci(n-1) + fibonacci(n-2),
}
}
fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20))));
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);
最后,使用以下命令运行此基准:cargo bench
。您应该看到类似以下内容的输出
Running target/release/deps/example-423eedc43b2b3a93
fib 20 time: [26.029 us 26.251 us 26.505 us]
Found 11 outliers among 99 measurements (11.11%)
6 (6.06%) high mild
5 (5.05%) high severe
有关更多详细信息,请参阅入门指南。
目标
Criterion.rs 的主要目标是提供一个强大且统计上严谨的工具来衡量代码的性能,防止性能退化并准确测量优化。此外,它应尽可能对程序员友好,并使创建可靠、有用的基准测试变得容易,即使对于没有高级统计背景的程序员也是如此。
贡献
首先,感谢您的贡献。
为 Criterion.rs 做出贡献的一个很好的方法是使用它来满足您的基准测试需求,并报告您的经验,提交和评论问题等。
以拉取请求的形式提交代码或文档改进也是受欢迎的。如果您不确定要做什么,请尝试检查初学者标签。
如果在几天后您的問題或拉取请求没有回应,请随时联系我 (@bheisler)。
有关更多详细信息,请参阅CONTRIBUTING.md 文件。
兼容性策略
Criterion.rs 支持 Rust 的最后三个稳定次要版本。在撰写本文时,这意味着 Rust 1.59 或更高版本。较旧版本可能可以工作,但无法保证。
目前,被认为可以工作的 Rust 的最旧版本是 1.57。Criterion.rs 的未来版本可能不支持这些旧版本,这不会被视为破坏性更改。如果您需要 Criterion.rs 在旧版本的 Rust 上运行,您将需要坚持使用 Criterion.rs 的特定补丁版本。
维护
Criterion.rs 由 Jorge Aparicio (@japaric) 创建,并由 Brook Heisler (@bheisler) 维护。
许可证
Criterion.rs 在 Apache 2.0 许可证和 MIT 许可证下双许可。
相关项目
- bencher - 将 libtest 基准测试运行器移植到稳定 Rust
- criterion - 启发 Criterion.rs 的 Haskell 微基准测试库
- cargo-benchcmp - Cargo 子命令,用于比较两次 libtest 或 bencher 基准测试运行的输出
- cargo-flamegraph - Cargo 子命令,用于分析可执行文件并生成火焰图
Criterion.rs 扩展
- criterion-cycles-per-byte - 一个自定义测量插件,用于计算基准测试使用的 CPU 周期数
- criterion-perf-events - 一个自定义测量插件,用于计算由基准测试创建的 perf 事件
依赖项
~3–18MB
~206K SLoC