gpt4 book ai didi

java - Java 的 JIT 编译器运行速度有多快?

转载 作者:搜寻专家 更新时间:2023-11-01 02:27:53 27 4
gpt4 key购买 nike

在谈论“长时间运行”的应用程序时,我听说过很多关于 JIT 编译如何使代码比预编译代码运行得更快的说法。但是完全优化您的应用程序需要多长时间?

出于兴趣,我将向您展示示例。我有一些方法,我们称它为 mySlowMethod()。它每秒执行几百次矩阵计算,例如旋转、乘法等。我测量了每次通话的时间并得到了这些结果:

long time = System.nanoTime();
mySlowMethod();
System.out.println(System.nanoTime()-time);

//first call
1577187 (1.6 ms)
//next 2 seconds
~60000 (0.06 ms)
//later
less than 10000 (0.01 ms)

最佳答案

JIT 实际上以多个较小的步骤运行,以最大限度地减少对应用程序启动的性能影响。这些步骤包括:

  1. 多种模式。

    • baseline JIT 编译器用于执行 [相对] 简单的字节码到机器码的直接转换,以便立即执行各个方法。
    • 优化 编译器用于对多次执行和/或消耗大量计算资源的代码执行许多高级优化。
  2. 增量编译。

    • 虽然 JVM 会预先加载整个模块的字节码,但实际的编译过程通常会推迟到第一次实际执行方法时。对于 IDE 等大型应用程序,很明显并非 IDE 的所有功能在应用程序启动时都在使用,因此这种增量编译能力将 JIT 过程扩展到更长的应用程序运行时持续时间,以至于通常甚至不会引起注意。

总的来说,应用程序可能从未“完全优化”,但您永远不会知道这一点,因为您真正关心的部分在早期就已优化。

关于java - Java 的 JIT 编译器运行速度有多快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17331480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com