Performance 什么是OpenJDK JMH;分数错误“;到底是什么意思?

Performance 什么是OpenJDK JMH;分数错误“;到底是什么意思?,performance,benchmarking,microbenchmark,jmh,Performance,Benchmarking,Microbenchmark,Jmh,我使用的是基准测试,结果如下: 基准模式样本分数误差单位 o、 a.f.c.j.b.TestClass.test1 avgt 5 2372870600 210897743 us/op o、 a.f.c.j.b.TestClass.test2 avgt 5 2079931850 394727671美国/欧洲 o、 a.f.c.j.b.TestClass.test3 avgt 5 26585818 21105739 us/op o、 a.f.c.j.b.TestClass.test4 avgt 5

我使用的是基准测试,结果如下:

基准模式样本分数误差单位 o、 a.f.c.j.b.TestClass.test1 avgt 5 2372870600 210897743 us/op o、 a.f.c.j.b.TestClass.test2 avgt 5 2079931850 394727671美国/欧洲 o、 a.f.c.j.b.TestClass.test3 avgt 5 26585818 21105739 us/op o、 a.f.c.j.b.TestClass.test4 avgt 5 19113230 8012852 us/op o、 a.f.c.j.b.TestClass.test5 avgt 5 2586413 1949487 us/op o、 a.f.c.j.b.TestClass.test6 avgt 5 1942963 1619967 us/op o、 a.f.c.j.b.TestClass.test7 avgt 5 233902 73861 us/op o、 a.f.c.j.b.TestClass.test8 avgt 5 191970 126682 us/op


“分数误差”一栏的确切含义是什么?如何解释它?

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

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遭受“假精度”(false precision)的困扰。显示的测量有效数字错误地暗示了比误差更高的精度。例如,说“1.776361±0.154321”是没有意义的。最佳情况为1.78±0.15。由于误差的大小,任何进一步的数字都是假精度。因此,在jmh中要注意精度。在1.21版中,列标签不是“Score error”,而是“error”,但上面的答案仍然适用,对吗?@JamesFreitas Yes。另请参阅
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