有没有一种将基准测试结果保存为JSON的方法?

3

这个提交(问题#19145)在运行基准测试时删除了--save-metrics选项。是否有一种方式生成类似于--save-metrics的格式,以便形式化地生成基准运行的JSON?


注意:SO不涉及软件推荐,因此根据指南,询问板条箱是不相关的。然而,开放式问题(如您的标题)是可以的,因此建议删除提到“另一个板条箱”的提及。 - Matthieu M.
@MatthieuM。我在想这个功能是否被移动到了外部的板条箱中,但你说得很有道理。 - Daniel Fath
@Shepmaster?等等,rustc不运行基准测试吗?我问这个问题是因为如果Cargo运行基准测试,我可能可以在那里更改一些东西或复制处理基准测试的方式。 - Daniel Fath
2
@DanielFath 这只是一个小学问。rustc 是 Rust 编译器,它将你的源代码编译成二进制文件。编译器生成的二进制文件在运行时产生基准测试结果。如果按照你的术语来说,那么 rustc 就应该负责编译后的 Rust 程序所做的一切事情 :-) - Shepmaster
1个回答

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格式。因此,您可能希望考虑使用它来自行进行统计分析。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接