OpenJDK JMH"得分错误"究竟意味着什么?

sal*_*lyh 15 performance benchmarking microbenchmark jmh

我正在使用http://openjdk.java.net/projects/code-tools/jmh/进行基准测试,我得到的结果如下:

__PRE__

"得分误差"一栏究竟是什么意思以及如何解释它?

Ale*_*lev 26

这是分数的误差范围.在大多数情况下,这是置信区间的一半.想想看,好像"得分"和"得分错误"之间有"±"符号.事实上,人类可读的日志将显示:

Result: 1.986 ±(99.9%) 0.009 ops/ns [Average]
  Statistics: (min, avg, max) = (1.984, 1.986, 1.990), stdev = 0.002
  Confidence interval (99.9%): [1.977, 1.995]


# Run complete. Total time: 00:00:12

Benchmark                  Mode  Samples   Score  Score error   Units
o.o.j.s.HelloWorld.hello  thrpt        5   1.986        0.009  ops/ns
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一下,我觉得这里还有改进的余地.正如您从OP的数据中看到的那样,jmh会遇到"虚假精确"(https://en.wikipedia.org/wiki/False_precision).显示的有效数字错误地表示比错误更高的精度.例如,说"1.776361±0.154321"没有意义.最好的情况是1.78±0.15.由于误差的大小,任何进一步的数字都是错误的精度.所以要小心jmh的精度. (3认同)
  • 在 1.21 版中,而不是“分数错误”,列标签是“错误”,但上面的答案仍然适用,对吗? (2认同)