这个提交(问题#19145)在运行基准测试时删除了--save-metrics
选项。是否有一种方式生成类似于--save-metrics
的格式,以便形式化地生成基准运行的JSON?
这个提交(问题#19145)在运行基准测试时删除了--save-metrics
选项。是否有一种方式生成类似于--save-metrics
的格式,以便形式化地生成基准运行的JSON?
默认的测试工具库libtest
(实际运行测试的工具)有一个CLI参数--format
。它接受值pretty
(默认)、terse
和json
。然而,JSON输出仍然不稳定(截至Rust 1.37),因此需要夜间编译器。要启用此不稳定功能,您还需要标志-Z unstable-options
。将所有内容组合在一起:
cargo bench -- --format=json -Z unstable-options
这将输出类似于以下内容:
Finished release [optimized] target(s) in 0.02s
Running target/release/deps/foo-177d129f966b1f75
{ "type": "suite", "event": "started", "test_count": 1 }
{ "type": "test", "event": "started", "name": "bench_foo" }
{ "type": "bench", "name": "bench_foo", "median": 10138124, "deviation": 165468 }
{ "type": "suite", "event": "ok", "passed": 0, "failed": 0, "allowed_fail": 0, "ignored": 0, "measured": 1, "filtered_out": 0 }
这可能与原始的--save-metrics
标志不同,但至少有些相似。
值得一提的是,一些外部基准测试框架(如Criterion)总是将原始数据保存为JSON格式。因此,您可能希望考虑使用它来自行进行统计分析。
rustc
不运行基准测试吗?我问这个问题是因为如果Cargo运行基准测试,我可能可以在那里更改一些东西或复制处理基准测试的方式。 - Daniel Fathrustc
是 Rust 编译器,它将你的源代码编译成二进制文件。编译器生成的二进制文件在运行时产生基准测试结果。如果按照你的术语来说,那么rustc
就应该负责编译后的 Rust 程序所做的一切事情 :-) - Shepmaster