提前编译需要在jmh进行预热吗?

时间:2015-03-20 15:51:22

标签: java jmh

我正在阅读有关java microbenchmark线束的一些文档,我得到了这个肯定:

  

每个在线优化都需要预热,基础知识:热身JIT编译并不是唯一的在线优化。

这个预热阶段对于提前编译的vm是否仍然有用?

1 个答案:

答案 0 :(得分:3)

通过"某些文件",我认为,你的意思是我的一些基准测试会谈。如果你看过这个视频,就会有一个"在线优化的例子"这不是JIT编译:动态调整分配率的GC启发式算法。

上述断言的要点是所有过程都有瞬态响应。当运行时(甚至完全静态编译的应用程序)从零转换为完全执行时,需要时间来适应新条件:加载,链接,编译代码,保持应用程序缓存,启动和平衡内核线程,唤醒CPU和解决在合理的频率等等。所有这些都包含在预热中。之后的下一阶段是稳定状态,此时系统完全适应并且瞬态响应得以解决。这是您开始基准测试的地方。

换句话说," JIT编译不是唯一的在线优化"。