gpt4 book ai didi

compiler-construction - 与传统编译器相比,JIT 编译器有什么缺点吗?

转载 作者:行者123 更新时间:2023-12-04 08:39:59 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




11 年前关闭。




Possible Duplicate:
JIT compiler vs offline compilers



所以直到几分钟前我才真正理解 JIT 编译器和解释器之间的区别是什么。浏览 SO,我找到了答案,它提出了标题中的问题。据我所知,JIT 编译器的优点是能够使用它运行的特定处理器,从而可以制作更好的优化程序。有人可以给我比较一下每种方法的优缺点吗?

最佳答案

解释器、JIT 编译器和“离线”编译器

Difference between a JIT compiler and an interpreter



为了简单起见,我们假设解释器将运行字节码 (中级代码/语言) .当 VM/解释器决定这样做更好时,JIT 编译机制会将相同的字节码转换为 以 native 代码为目标 对于有问题的硬件,重点是所请求的优化类型。

So basically a JIT might produce a faster executable but take way longer to compile?



我认为您缺少的是 JIT 编译发生在 运行时间 而不是编译时间(与“离线”编译器不同)

JIT 编译有开销

编译码 不是免费的 ,也需要时间。如果它花时间编译它,然后只运行几次,它可能不会做一个好的交易。因此,VM 仍然必须决定将什么定义为“热点”并对其进行 JIT 编译。

请允许我举例说明 Java 虚拟机 (JVM):

JVM 可以进行切换,您可以使用这些开关定义代码将被 JIT 编译的阈值。 -XX:CompileThreshold=10000
为了说明 JIT 编译时间的成本,假设您将该阈值设置为 20,并且有一段代码需要运行 21 次。运行 20 次后,VM 现在将投入一些时间进行 JIT 编译。现在您拥有来自 JIT 编译的 native 代码,但它只会再运行一次(21 次),这可能不会带来任何性能提升来弥补 JIT 过程。

我希望这说明了它。

这是一个 JVM 开关,显示了 JIT 编译所花费的时间 -XX:-CITime “打印在 JIT 编译器中花费的时间”

旁注:我不认为这是一个“大问题”,只是自从你提出这个问题以来我想指出的一点。

关于compiler-construction - 与传统编译器相比,JIT 编译器有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221861/

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