Java JMH中迭代次数和分叉次数之间的正确平衡

Java JMH中迭代次数和分叉次数之间的正确平衡,java,microbenchmark,jmh,Java,Microbenchmark,Jmh,我正在探索OpenJDK JMH,以便对我的代码进行基准测试。根据我的理解,JMH默认分叉多个JVM,以保护测试不受以前收集的“概要文件”的影响。这在本文中得到了很好的解释 然而,我的问题是,如果我使用以下两种方法执行,我将对结果产生什么影响: 1) 使用1个fork,100次迭代 2) 使用10个fork,每次迭代10次 哪种方法会给出更准确的结果 视情况而定。需要多个分叉来估计运行到运行的差异,请参阅。因此,单叉肯定更糟糕。然后,如果你问什么更好:10x100运行还是100x10运行,这同样

我正在探索OpenJDK JMH,以便对我的代码进行基准测试。根据我的理解,JMH默认分叉多个JVM,以保护测试不受以前收集的“概要文件”的影响。这在本文中得到了很好的解释

然而,我的问题是,如果我使用以下两种方法执行,我将对结果产生什么影响:

1) 使用1个fork,100次迭代 2) 使用10个fork,每次迭代10次


哪种方法会给出更准确的结果

视情况而定。需要多个分叉来估计运行到运行的差异,请参阅。因此,单叉肯定更糟糕。然后,如果你问什么更好:10x100运行还是100x10运行,这同样取决于更糟糕的问题是什么——运行到运行的差异,还是运行中的差异。

这取决于每个fork与每个迭代的结果差异有多大,这是特定于工作负载的

如果你想要一个严格的统计方法来计算这个折衷,看看吧。等式3通过使用观察到的分叉之间和迭代之间的差异,给出了每个级别的最佳计数(在您的情况下,这些是要运行的分叉数和每个分叉的迭代数)。

可能重复的