【发布时间】:2020-01-19 22:39:12
【问题描述】:
考虑到 JMH 的默认使用情况,我想确定 JMH 的测量基于哪种类型的时间:CPU 时间或挂钟。
我尝试查看 JMH 官方示例 (https://openjdk.java.net/projects/code-tools/jmh/)、教程(在 Jenkov、Baeldung、Mykong 等),但未能准确找到这些信息(我承认我可能错过了一些文档或一般信息基准)。
例如,在示例 35 (https://hg.openjdk.java.net/code-tools/jmh/file/99d7b73cf1e3/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_35_Profilers.java) 中,我们有一个输出示例:
Benchmark (type) Mode Cnt Score Error Units
JMHSample_35_Profilers.Maps.test hashmap avgt 5 1553.201 ± 6.199 ns/op
JMHSample_35_Profilers.Maps.test treemap avgt 5 5177.065 ± 361.278 ns/op
因此,我想知道 Score 列是使用 Wall-clock time 还是 CPU Time 计算的,以便我可以准确地解释基准测试结果。
【问题讨论】:
-
也许你可以通过hg.openjdk.java.net/code-tools/jmh/file/99d7b73cf1e3查看jmh的源代码找到你的答案
标签: java benchmarking jmh cpu-time