gpt4 book ai didi

graalvm - 为什么 Graals AOT 编译器比 JIT 慢?

转载 作者:行者123 更新时间:2023-12-02 15:12:29 28 4
gpt4 key购买 nike

一般来说,当开发人员试图解释为什么(高度调整的)C++ 比 Java 快大约 2 倍时,他们提到一个因素是 C++ AOT 编译比 JIT 有更多的时间来进行广泛的优化。所以我假设 Graal 中的 AOT 编译也会有类似的机会,这样即使它不如 C++ 快,它至少也会比 JIT 编译快——然而,情况似乎并非如此。这是为什么?特别是,是否存在 Graal 的 AOT 编译器会更快的特定场景?相反,是否存在 JIT 比 GRAAL AOTr 更快的情况? (这样,我就可以就完全构建解决方案后的有用性做出明智的决定)?

最佳答案

one factor is that C++ AOT compilation has much more time to do extensive optimizations than JIT.

这并不是一个真正的问题。 JIT 可以根据需要进行优化,并且还可以执行多次增量编译运行。这可以在后台线程中完成。

它真正归结为:信息。高度调优的 C++ 速度很快,因为编写它的开发人员使用了所有可用的信息来优化代码。这意味着能够做出更多假设或执行巧妙的优化技巧,并且 C++ 语言允许您调整所有优化旋钮。

JIT 当然做得最好,但它不一定拥有开发人员拥有的特定代码段的所有信息,因为它是一个更通用的优化器。在某些情况下,JIT 还具有编译器内在函数,它们基本上是某些方法和代码模式的手动调整替代品。同样,这是开发人员利用对某种情况的高级知识来进行优化。

然而,对于普通的 Java AOT 来说,情况恰恰相反;由于 AOT 编译器在程序执行之前运行,因此它有关程序运行环境的信息较少,并且没有分析信息,因此它无法进行良好的优化。

关于graalvm - 为什么 Graals AOT 编译器比 JIT 慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54011441/

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