gpt4 book ai didi

android - ART中AOT和JIT编译器的区别

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:04:20 25 4
gpt4 key购买 nike

在 Marshmallow 中有一个添加了 ART 的 AOT 编译器。从 Android N 开始,除了 AOT 之外,还添加了另一个编译器 JIT。

AOT 编译器特定的工作/功能是什么,JIT 编译器的工作/功能是什么?

最佳答案

在 Android Java 类中转换为 DEX 字节码。DEX 字节码格式通过 ART 或 Dalvik 运行时转换为 native 机器代码。

Dalvik is a JIT (Just in time) compilation based engine. There were drawbacks to use Dalvik hence from Android 4.4 (kitkat) ART was introduced as a runtime and from Android 5.0 (Lollipop) it has completely replaced Dalvik. Android 7.0 adds a just-in-time (JIT) compiler with code profiling to Android runtime (ART) that constantly improves the performance of Android apps as they run.

(Dalvik 使用 JIT(Just in time)编译,而 ART 使用 AOT(Ahead of time)编译。)

准时制 (JIT):

使用 Dalvik JIT 编译器,每次运行应用程序时,它都会动态地将一部分 Dalvik 字节码转换为机器码。随着执行的进行,更多的字节码被编译和缓存。由于 JIT 只编译部分代码,因此它占用的内存更小,在设备上使用的物理空间也更少。

提前 (AOT):

ART 配备了 Ahead-of-Time 编译器。在应用程序的安装阶段,它将 DEX 字节码静态转换为机器码并存储在设备的存储中。这是一次性事件,在应用安装到设备上时发生。

Android N 包含一个混合运行时:

安装时不会编译,直接启动应用,正在解释的字节码。 ART 中有一个新的、更快的解释器,它伴随着一个新的 JIT,但 JIT 信息不会持久化。取而代之的是,代码在执行期间被分析,结果数据被保存。

ART 的好处:

  • 应用在安装期间完成 DEX 字节码转换后运行速度更快。
  • 减少应用程序的启动时间,因为直接执行 native 代码。
  • 提高电池性能,因为用于逐行解释字节代码的电量得以节省。
  • 改进了垃圾收集器。

ART 的缺点:

  • 由于 DEX 字节码在安装过程中会转换为机器码,因此应用安装需要更多时间。

  • 由于安装时生成的 native 代码存储在内部存储中,因此需要更多内部存储。

关于android - ART中AOT和JIT编译器的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40336455/

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