You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中使用#[bench]报错,正确的基准测试方式是什么?

报错原因说明

#[bench] 属于Rust的不稳定测试特性,仅支持在nightly版本的Rust工具链上运行,你使用的是stable稳定版工具链,所以会触发特征不支持的编译报错。官方文档中关于cargo bench的#[bench]示例是默认面向nightly工具链场景编写的,未明确标注工具链要求才会导致你直接粘贴代码运行失败。

稳定版Rust正确基准测试方案

当前稳定版Rust生态的标准基准测试方案是使用官方维护的criterion库,这是目前唯一被广泛推荐、不会过时的基准测试方案,使用步骤如下:

  1. 在项目Cargo.toml中添加依赖配置:
[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }

[[bench]]
name = "my_benchmark"
harness = false
  1. 在项目benches/目录下创建my_benchmark.rs文件,编写基准测试代码,示例如下:
use criterion::{criterion_group, criterion_main, Criterion};

fn test_func(c: &mut Criterion) {
    c.bench_function("测试vec插入性能", |b| b.iter(|| {
        let mut vec = Vec::new();
        for i in 0..1000 {
            vec.push(i);
        }
        vec
    }));
}

criterion_group!(benches, test_func);
criterion_main!(benches);
  1. 运行命令cargo bench即可得到统计完善的基准测试结果,还会自动生成可视化的HTML报告。
cargo bench的构建版本规则
  • 默认情况下,cargo bench会使用release优化版本执行测试,默认开启最高等级优化(opt-level=3),完全匹配生产环境的构建配置,确保测试结果具备参考价值。
  • 如需指定其他构建版本,可以通过--profile参数实现:
    • 测试debug版本性能:cargo bench --profile dev
    • 测试自定义配置版本:可先在Cargo.toml中自定义对应profile的优化规则,再通过--profile 自定义profile名运行测试即可。
关于#[bench]的状态说明

#[bench]并未被废弃,只是Rust核心团队一直没有将其纳入稳定特性的计划,所以长期仅能在nightly工具链使用,普通开发者没有特殊需求不需要适配该特性,使用稳定版兼容的criterion方案即可。

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:15:05