gpt4 book ai didi

rust - 如何在每个文件的基础上执行 `cargo bench`?

转载 作者:行者123 更新时间:2023-11-29 08:11:19 25 4
gpt4 key购买 nike

我正在处理 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

如何在单个文件中运行基准测试?

最佳答案

没有直接的“在磁盘上运行此文件中包含的测试”选项。 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::

关于rust - 如何在每个文件的基础上执行 `cargo bench`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50160101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com