【发布时间】:2018-08-27 17:55:35
【问题描述】:
我认为这是微基准测试中的潜在缺陷之一。如果您指定@Measurement(或@Warmup)将运行固定的时间,这意味着,当比较不同的运行(例如,不同的平台、不同版本的 VM 等)时,您将获得更少的“苹果对苹果”的比较,因为运行不会做同样的工作!
如果一次运行执行得更快,那么它将在给定时间内执行更多操作。这会引入可能会影响结果的混杂因素:更多的动态优化机会、缓存差异、每个操作的不同统计信息等。
另一方面,如果您指定固定数量的操作,则每次运行都在做完全相同的工作量,从而提高对结果的信心。
那么,JMH 使用这种指定固定时间量而不是固定操作次数的方法的原因是什么?是否有一些重要的原因推动我错过了这个设计决策?我在 JMH 文档和在线讨论中都进行了搜索,但我无法找到这个问题的答案。
【问题讨论】:
标签: jmh