如何在每个文件的基础上执行 `cargo bench`?
How do I execute `cargo bench` on a per-file basis?
我正在解决 Project Euler 个问题,每个问题都在不同的文件中。当我尝试不同的方法来解决每个问题时,我在其各自的文件中为每个问题创建了一系列基准。
我的目录结构如下:
euler/
Cargo.lock
Cargo.toml
README.md
src/
main.rs
p001.rs
p002.rs
...etc.
main.rs
的内容是:
#![feature(test)]
extern crate primes;
extern crate test;
mod p001;
mod p002;
// ... etc
fn main() {}
当我 运行 cargo bench
时,它 运行 是我项目中每个文件的基准:
$ cargo bench
Finished release [optimized] target(s) in 0.02 secs
Running target/release/deps/euler_rust-5be87dff38a04da2
running 11 tests
test p001::bench_fold_sum ... bench: 12,955 ns/iter (+/- 13,501)
test p001::bench_for_sum ... bench: 11,385 ns/iter (+/- 7,383)
test p002::bench_for_sum ... bench: 270 ns/iter (+/- 90)
test p002::bench_takewhile_filter_mutable_sum ... bench: 322 ns/iter (+/- 333)
test p002::bench_takewhile_filter_sum ... bench: 512 ns/iter (+/- 379)
test p002::bench_takewhile_sum ... bench: 273 ns/iter (+/- 117)
test p002::bench_while_sum ... bench: 286 ns/iter (+/- 240)
我只对 运行 包含在一个文件中的基准感兴趣,但在 cargo bench
之后指定文件名会产生以下结果:
$ cargo bench src/p002.rs
Finished release [optimized] target(s) in 0.02 secs
Running target/release/deps/euler_rust-5be87dff38a04da2
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 11 filtered out
您如何 运行 单个文件中的基准测试?
没有直接的 "run the tests contained in this file on disk" 选项。 cargo bench
的帮助说:
$ cargo bench --help
Execute all benchmarks of a local package
Usage:
cargo bench [options] [BENCHNAME] [--] [<args>...]
Options:
BENCHNAME If specified, only run benches containing this string in their names
另外,文件对应Rust模块,模块是测试名称的一部分。
您可以将这两个东西组合在一起,并使用 cargo bench my_file_slash_module_name
来限制 运行 的测试。在您的具体情况下:
cargo bench p002
如果您碰巧有其他测试或模块包含相同的子字符串,您有时可以通过添加冒号来逃避:
cargo bench p002::
我正在解决 Project Euler 个问题,每个问题都在不同的文件中。当我尝试不同的方法来解决每个问题时,我在其各自的文件中为每个问题创建了一系列基准。
我的目录结构如下:
euler/
Cargo.lock
Cargo.toml
README.md
src/
main.rs
p001.rs
p002.rs
...etc.
main.rs
的内容是:
#![feature(test)]
extern crate primes;
extern crate test;
mod p001;
mod p002;
// ... etc
fn main() {}
当我 运行 cargo bench
时,它 运行 是我项目中每个文件的基准:
$ cargo bench
Finished release [optimized] target(s) in 0.02 secs
Running target/release/deps/euler_rust-5be87dff38a04da2
running 11 tests
test p001::bench_fold_sum ... bench: 12,955 ns/iter (+/- 13,501)
test p001::bench_for_sum ... bench: 11,385 ns/iter (+/- 7,383)
test p002::bench_for_sum ... bench: 270 ns/iter (+/- 90)
test p002::bench_takewhile_filter_mutable_sum ... bench: 322 ns/iter (+/- 333)
test p002::bench_takewhile_filter_sum ... bench: 512 ns/iter (+/- 379)
test p002::bench_takewhile_sum ... bench: 273 ns/iter (+/- 117)
test p002::bench_while_sum ... bench: 286 ns/iter (+/- 240)
我只对 运行 包含在一个文件中的基准感兴趣,但在 cargo bench
之后指定文件名会产生以下结果:
$ cargo bench src/p002.rs
Finished release [optimized] target(s) in 0.02 secs
Running target/release/deps/euler_rust-5be87dff38a04da2
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 11 filtered out
您如何 运行 单个文件中的基准测试?
没有直接的 "run the tests contained in this file on disk" 选项。 cargo bench
的帮助说:
$ cargo bench --help
Execute all benchmarks of a local package
Usage:
cargo bench [options] [BENCHNAME] [--] [<args>...]
Options:
BENCHNAME If specified, only run benches containing this string in their names
另外,文件对应Rust模块,模块是测试名称的一部分。
您可以将这两个东西组合在一起,并使用 cargo bench my_file_slash_module_name
来限制 运行 的测试。在您的具体情况下:
cargo bench p002
如果您碰巧有其他测试或模块包含相同的子字符串,您有时可以通过添加冒号来逃避:
cargo bench p002::