2

我使用 OpenJDK JMH 0.9.3,有时我会得到一个如下所示的结果日志文件。这里的 (*interrupt*) 是什么意思?

使用命令分叉 1 次:[/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/...]
# 运行进度:53,85% 完成,ETA 00:01:26
# 叉子:1 个中的 1 个
# 预热迭代 1: 19950765,000 us/op
# 预热迭代 2: (*interrupt*) (*interrupt*) (*interrupt*) 18107134,000 us/op
# 预热迭代 3: (*interrupt*) 14439157,500 us/op
迭代 1:13571806,000 us/op
迭代 2:7484946,500 us/op
迭代 3: (*interrupt*) 12386565,000 us/op
迭代 4: (*interrupt*) 7245477,500 us/op
迭代 5: (*interrupt*) 9047236,000 us/op


结果:9947206,200 ±(99.9%) 11103651,130 us/op [平均]
  统计数据:(最小值、平均值、最大值)= (7245477,500, 9947206,200, 13571806,000),stdev = 2883582,937
  置信区间 (99.9%):[-1156444,930, 21050857,330]
4

1 回答 1

3

这意味着您的工作负载被 JMH 中断,很可能是因为它超出了迭代时间。它打印“(中断)”,让您知道分数是在 JMH 的积极干预下获得的,并且可能不可靠。

你可以用@Timeout(time = 1, timeUnit = TimeUnit.HOURS)注释来注释你的基准,它会知道这需要更长的时间。默认情况下,当您运行一些批量测量(未设置时间限制)时,它将默认为 10 分钟时间限制

于 2014-07-14T08:53:00.370 回答