#benchmark #env-var #iteration #tasks #count #variables #memory

benchy

Benchy 是一个用于对长时间运行的任务进行基准测试的 crate。

1 个不稳定版本

0.1.1 2023年9月19日
0.1.0 2019年8月9日

#163 in 性能分析

Download history 26/week @ 2024-04-21 8/week @ 2024-04-28 31/week @ 2024-05-05 13/week @ 2024-05-12 20/week @ 2024-05-19 21/week @ 2024-05-26 19/week @ 2024-06-02 20/week @ 2024-06-09 29/week @ 2024-06-16 34/week @ 2024-06-23 12/week @ 2024-06-30 32/week @ 2024-07-07 6/week @ 2024-07-14 8/week @ 2024-07-21 64/week @ 2024-07-28 52/week @ 2024-08-04

130 每月下载量

MIT 许可证

18KB
376 代码行

Benchy

Benchy 是一个用于对长时间运行的任务进行基准测试的 Rust crate。与优化于高频、纳秒级性能的 Criterion 等其他基准测试库不同,Benchy 专为需要大量时间执行的任务而设计。它提供了一个灵活且可定制的环境,允许您设置自定义迭代次数,甚至测量内存使用指标。

功能

  • 自定义迭代次数:根据需要运行基准测试的次数。
  • 内存使用指标:了解您的代码使用了多少内存。
  • 环境变量配置:使用环境变量实时自定义基准测试。
  • JSON 输出:轻松将基准测试结果导出为 JSON 以进行进一步分析。

安装

cargo add benchy

快速入门

benches/bench.rs:

use benchy::{benchmark, BenchmarkRun};

#[benchmark]
fn fibonacci_single(b: &mut BenchmarkRun) {
    let mut x = 0;
    let mut y = 1;
    b.run(|| {
        for _ in 0..1_000_000 {
            let temp = x;
            x = y;
            y = temp + y;
        }
    });
}

#[benchmark("Fibonacci", [
    ("1 million iterations", 1_000_000),
    ("2 million iterations", 2_000_000),
])]
fn fibonacci_parametrized(b: &mut BenchmarkRun, iterations: usize) {
    let mut x = 0;
    let mut y = 1;
    b.run(|| {
        for _ in 0..iterations {
            let temp = x;
            x = y;
            y = temp + y;
        }
    });
}

benchy::main!(fibonacci_single, fibonacci_parametrized);

Cargo.toml:

[[bench]]
name = "bench"
harness = false

对于更高级的使用,请查看利用此 crate 的 zk-bench 仓库,或参考 文档

环境变量

  • BENCHY_QUICK (默认:false) - 如果为 true,则仅运行每个基准测试的第一个参数。
  • BENCHY_OUTPUT_DIR (默认:None) - 输出 JSON 基准测试结果的目录。
  • BENCHY_MAX_DEFAULT_ITERATIONS_DURATION (默认:10s) - 单个基准测试默认(10)迭代的最大总持续时间。

依赖关系

~2–10MB
~106K SLoC