我正在探索OpenJDK JMH来对我的代码进行基准测试.根据我的理解,JMH默认情况下会派生多个JVM,以保护测试免受先前收集的“配置文件”的攻击.在sample code中对此进行了很好的解释.
但是我的问题是,如果我使用以下两种方法执行,将会对结果产生什么影响:
1)用1个fork,100次迭代
2)使用10个fork,每个迭代10次
哪种方法将给出更准确的结果?
解决方法:
这取决于.需要多个分叉来估计运行方差,请参阅JMHSample_13_RunTo_Run.因此,单个分叉肯定更糟.然后,如果您问哪个更好:10×100运行或100×10运行,这又取决于更糟糕的问题-运行间差异或运行内差异.