我正在使用JMH基准测试框架(http://openjdk.java.net/projects/code-tools/jmh/)在我的代码上运行基准测试.我的理解是JMH在基准测试期间多次分配JVM,以便丢弃由JVM在执行期间执行的即时(JIT)分析构建的任何配置文件.
我理解为什么这在某些情况下很有用,如下所示(从http://java-performance.info/jmh/复制逐字):
默认情况下,JHM为每个试验(迭代集)分配一个新的java进程.这是为了保护测试免受先前收集的"配置文件" - 有关其他已加载类及其执行信息的信息.例如,如果你有2个类实现相同的接口并测试它们的性能,那么第一个实现(按测试顺序)可能比第二个(在同一个JVM中)更快,因为JIT替换在发现第二个实现之后,direct方法使用接口方法调用调用第一个实现.
但是,如果您反复对相同的代码进行基准测试,那么运行10个分别为20次迭代的分叉而不是1次分叉200次迭代是否有任何优势?
非常感谢,
丹尼