提前编译是否需要在 jmh 中预热?

Does Ahead Of Time compilation need warmup in jmh?

我正在阅读一些关于 java 微基准测试工具的文档,我偶然发现了这个肯定:

Every online optimization requires warmup,Basics: Warmup JIT compilation is NOT the only online optimization.

这个预热阶段对提前编译的虚拟机是否仍然有用?

"some document",我想,你指的是我的一些基准测试演讲。如果您看过该视频,其中有一个 "online optimization" 不是 JIT 编译的示例:动态适应分配率的 GC 试探法。

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

换句话说,"JIT compilation is NOT the only online optimization"。