【发布时间】:2016-05-04 23:00:07
【问题描述】:
如果 IIUC 每个分叉创建一个单独的虚拟机,因为每个虚拟机实例运行时 JIT 指令可能略有不同?
我也很好奇下面注解中时间属性的作用:
@Warmup(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
TIA, 奥莱
【问题讨论】:
-
我认为这回答了你的问题:stackoverflow.com/questions/25572778/…
-
所以 IIUC,每个 fork 都在单独的 VM 中运行。我们这样做是因为每个启动的 VM 可能存在细微的差异,这会导致运行时不同,因此我们可以考虑方差计算吗?
-
是的,每次运行的 JIT 行为方式可能存在差异,因此分叉允许考虑这一点。在运行基准测试时,我看到了非常奇怪的情况,其中一次运行会有一定的平均值,而另一次运行相同的测试会有非常不同的平均值,“简单地说”是因为 JIT 处理事情的方式不同。
-
很好 - 很高兴知道 - 谢谢 Tunaki。顺便说一句 - 如果您想将其添加为答案,我认为该答案比参考要清晰得多。
标签: java benchmarking jmh