【问题标题】:What does OpenJDK JMH "score error" exactly mean?OpenJDK JMH“分数错误”到底是什么意思?
【发布时间】:2014-09-03 14:26:36
【问题描述】:

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

基准模式样本分数分数误差单位 o.a.f.c.j.b.TestClass.test1 平均 5 2372870,600 210897,743 us/op o.a.f.c.j.b.TestClass.test2 avgt 5 2079931,850 394727,671 us/op o.a.f.c.j.b.TestClass.test3 avgt 5 26585,818 21105,739 us/op o.a.f.c.j.b.TestClass.test4 平均 5 19113,230 8012,852 us/op o.a.f.c.j.b.TestClass.test5 avgt 5 2586,413 1949,487 us/op o.a.f.c.j.b.TestClass.test6 avgt 5 1942,963 1619,967 us/op o.a.f.c.j.b.TestClass.test7 平均 5 233,902 73,861 us/op o.a.f.c.j.b.TestClass.test8 平均 5 191,970 126,682 us/op

“分数错误”列的确切含义是什么以及如何解释它?

【问题讨论】:

标签: performance benchmarking microbenchmark jmh


【解决方案1】:

这是分数的误差范围。在大多数情况下,这是confidence interval 的一半。想一想,好像“分数”和“分数错误”之间有一个“±”号。事实上,人类可读的日志会显示:

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

【讨论】:

  • 顺便说一句,我认为这里还有改进的余地。从 OP 的数据中可以看出,jmh 患有“错误精度”(en.wikipedia.org/wiki/False_precision)。显示的测量有效数字错误地暗示了比误差更高的精度。例如,说“1.776361±0.154321”是没有意义的。最好的情况是 1.78±0.15。由于误差的大小,任何进一步的数字都是错误的精度。所以要小心 jmh 的精度。
  • 在 1.21 版中,列标签是“错误”而不是“分数错误”,但上面的答案仍然适用,对吧?
  • @JamesFreitas 是的。
猜你喜欢
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 2017-08-07
  • 2017-07-20
  • 2014-09-23
  • 2014-07-25
  • 2012-09-17
  • 1970-01-01
相关资源
最近更新 更多