【发布时间】:2016-06-07 08:53:45
【问题描述】:
我有一个包含一些基准和测试的文件,并希望针对稳定版、beta 版和 nightly 版进行测试。但是,要么我不使用基准测试,要么抱怨稳定/测试版。使用 stable/beta 时有没有办法隐藏所有基准测试部分?
以book中的以下代码为例:
#![feature(test)]
extern crate test;
pub fn add_two(a: i32) -> i32 {
a + 2
}
#[cfg(test)]
mod tests {
use super::*;
use test::Bencher;
#[test]
fn it_works() {
assert_eq!(4, add_two(2));
}
#[bench]
fn bench_add_two(b: &mut Bencher) {
b.iter(|| add_two(2));
}
}
我正在使用 rustup,并希望同一个文件适用于所有构建,调用类似:
rustup run nightly cargo bench --bin bench --features "bench"
rustup run nightly cargo test --bin bench --features "bench"
rustup run beta cargo test --bin bench
rustup run stable cargo test --bin bench
我能够用#![cfg_attr(feature = "bench", feature(test))] 隐藏#![feature(test)]。我可以做一些类似于其余基准部分的事情吗?什么是功能标志的好资源?
【问题讨论】:
-
您是否尝试将基准放入他们自己的文件中(在文件夹
bench中)? -
benches文件夹似乎至少适用于库。我不确定如何将它与例如来自bin/bench.rs的函数。我还发现在所有与基准相关的工作前面都写了#[cfg(feature = "bench")],并带有 ``--features "bench"` 标志。
标签: rust benchmarking