我可以使用已编写的Jmh微基准测试来预热生产代码

时间:2016-02-27 14:43:50

标签: java jmh

我有许多代码路径的基准测试需要高性能。我的Jmh微基准测试的热身迭代比我在生产中编写的热身代码更有效。我的问题是,我可以导出我的基准测试并通过Java API调用它们,以便在真实的实时应用程序中预热代码路径。或者说引擎盖下有一些魔法会使这种效果无效。

2 个答案:

答案 0 :(得分:1)

我不建议你这样做。首先,没有给出您可以提供基准测试所需的所有基础结构。例如,不可能提供某些对象,例如Blackhole,因为此类无法从基准外部实例化。其次,无法保证虚拟机的预热结果如你所愿:真正的代码可能会显示略微不同的行为,因此您的基准测试会污染您的配置文件,而不是为现实世界准备VM

为了预热VM,从外部提供类似于真实交互的交互几乎总是更好。将程序教学为自我预热对代码更改非常脆弱,几乎从不是一个好主意。

答案 1 :(得分:0)

我认为通过带有0个分支的API启动基准测试将在启动VM中运行基准测试。如果他们构成良好的热身,那么你可能会得到你想要的效果。