我正在使用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次迭代是否有任何优势?
非常感谢,
丹尼