gpt4 book ai didi

compiler-construction - JIT编译器做什么?

转载 作者:行者123 更新时间:2023-12-03 08:36:32 25 4
gpt4 key购买 nike

我只是在观看Google IO视频,他们谈论了他们包含在android系统中的JIT编译器。他们展示了使用JIT编译器进行性能改进的演示。我想知道JIT编译器到底做了什么,想听听其他人的意见。

那么,JIT编译器的职责是什么?

最佳答案

Java代码通常以字节码形式分发,它是与机器无关的伪代码。 (以前在70年代开发的UCSD-p系统中使用过相同的想法。)这样做的好处是,同一应用程序可以在不同的处理器和操作系统中运行。另外,字节码通常小于编译的应用程序。

缺点是与运行已编译的代码相比,解释代码的速度是
为了解决这个问题,开发了 JIT编译器。 JIT编译器在执行代码之前将代码编译为机器代码。与解释器相比,这可以加快执行速度,但是每次运行程序时,都要花更多的时间进行编译。
另外,由于JIT编译器必须快速编译,因此它不能使用静态编译器中使用的复杂优化技术。

另一种方法是 HotSpot 编译。它最初是作为解释器运行的,但随后会检测最常使用的例程,并仅编译那些例程。优点是不会因编译而产生初始延迟。此外,HotSpot编译器可能会在执行期间进行性能分析,然后对最重要的例程进行更强大的优化。它甚至可以收集信息,以便当您一次又一次地运行相同的应用程序时,它将运行得越来越快。可以从this article(链接的tnx Pangea)中找到有关HotSpot编译的更多信息。

当然,除了使用JIT编译器外,您还可以使用静态编译器来编译计算机的字节码。这样可以进行全面优化,然后您无需在每次运行应用程序时再次进行编译。但是,在电话和网页中,您通常只执行一次代码(或applet),因此JIT编译器可能是更好的选择。

更新

Python字节码文件的扩展名为.py。当执行字节码文件时,Python JIT编译器会生成已编译文件.pyc。下次运行同一程序时,如果.py文件没有更改,则无需再次编译它,而是由Python运行先前编译的.pyc文件。这样可以加快程序的启动速度。

关于compiler-construction - JIT编译器做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2903113/

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