【发布时间】:2023-08-15 07:48:02
【问题描述】:
在编写微基准测试时,可以观察到运行时的巨大差异,具体取决于方法是否已编译。有没有办法从程序中判断特定方法是否已编译?或者,有没有办法请求它,或者知道如何在没有任何额外信息的情况下充分加热它,例如传递给JVM的标志?显然,这不一定是完美的(例如,可能存在一些导致 JVM 回退到解释代码的条件),但这肯定是一种改进。
【问题讨论】:
-
您可以凭经验测量方法的执行时间并检查结果的分布情况。当它被编译时,你通常会有一个跳转。关于这种方法有一个关于 SO 的问题,但我现在找不到。显然,这有点突兀。
-
我几乎可以肯定答案是“不,绝对不是”。
-
@assylias - 只有在您确定该方法尚未编译时才有效。否则找不到跳转。此外,强大的变更检测算法也很麻烦。
标签: java performance jvm jit microbenchmark