有没有办法将基准测试结果保存为JSON?

时间:2015-05-20 13:32:27

标签: rust benchmarking

commit (issue #19145),在运行基准测试时删除了--save-metrics选项。有没有办法在类似于--save-metrics的正式中生成基准运行的JSON?

1 个答案:

答案 0 :(得分:0)

默认测试工具libtest(实际上是运行测试的工具)具有CLI参数--format。它接受值pretty(默认值),tersejson。但是,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。因此,您可能要考虑使用此方法自己进行统计分析。