24 个版本

0.5.1 2023 年 5 月 26 日
0.4.0 2022 年 9 月 10 日
0.3.6 2022 年 7 月 6 日
0.3.5 2021 年 7 月 26 日
0.1.1 2017 年 12 月 13 日

#1性能配置文件

Download history 602951/week @ 2024-04-22 571160/week @ 2024-04-29 560703/week @ 2024-05-06 606928/week @ 2024-05-13 612428/week @ 2024-05-20 626481/week @ 2024-05-27 719260/week @ 2024-06-03 738541/week @ 2024-06-10 700850/week @ 2024-06-17 740691/week @ 2024-06-24 677393/week @ 2024-07-01 738390/week @ 2024-07-08 725498/week @ 2024-07-15 728953/week @ 2024-07-22 699882/week @ 2024-07-29 687942/week @ 2024-08-05

2,875,974 每月下载量
5,363 个包(5,305 个直接) 中使用

Apache-2.0 OR MIT

495KB
11K SLoC

Criterion.rs

Rust 中的数据统计驱动微基准测试
GitHub branch checks state | Appveyor | Crates.io

Criterion.rs 通过检测和测量性能改进或退步,即使是微小的改进,来帮助您编写快速代码。您可以在了解每个更改如何影响代码性能的情况下,有信心地进行优化。

目录

功能

  • 统计:统计分析可以检测性能自上次基准测试运行以来是否以及变化了多少
  • 图表:使用 gnuplot 生成详细的基准测试结果图表
  • 稳定兼容性:无需安装 nightly 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 贡献的一个很好的方式是将其用于您的基准测试需求,并报告您的经验,提交和评论问题等。

以拉取请求的形式改进代码或文档也受到欢迎。如果您不确定要做什么,请尝试检查 入门标签

如果几天后您的问题或拉取请求没有收到回复,请随时 ping 我 (@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 扩展

依赖项

~7–21MB
~305K SLoC