aot android,android – JIT与AOT编译

我不是完全家喻户晓的,如何在实践中

Android上的Dalvik JIT工作,因为JIT有几个选择可以如何工作.

第一个选择是,在应用程序启动时,JIT将所有字节码转换为CPU指令.此选项在应用程序启动之前花费了一段时间,该应用程序可以以本机运行.问题是,翻译的应用程序在启动过程中必须保持内存,这不是很好.

第二个选择是,JIT作为真正的即时即时,这意味着即将推出的代码块.整个应用程序没有在启动时被翻译,但只有主要功能在启动时被翻译,然后在运行期间被翻译,当使用某些代码块(功能等)时.此选项消耗的内存较少,但运行时应用程序的速度要慢得多.

根据我发现的信息,Android使用第一个选项.应用程序在启动时被翻译,之后它几乎“运行”.而这个“几乎”是JIT和AOT之间的主要区别.

当您即将推出一些应用程序时,JIT只需要有限的时间将所有字节码编译为CPU指令,使发射延迟“可接受”长.这意味着它只能执行基本的优化.但是,当您安装某些应用程序时,您通常会花更多的时间来浪费时间,而您只做一次,而不是每次启动.这意味着AOT编译器有更多的时间来找到如何优化该应用程序的技巧.结果代码应该更“有效”.第二个好处是,编译的应用程序被存储到缓存中,并且只有其中的一部分可以在启动时加载到内存中.这意味着操作系统没有将整个代码保存在内存中并可以保存.这是主要的区别.

最后一部分的问题 – Android上的ART将安装(在将apk保存到/ data / app /之后)进行编译.但是,如果您擦除该缓存,或从Dalvik切换到ART,它将在第一次启动时编译所有已安装的应用程序,这可能需要10分钟甚至更长时间.

对我的坏英文也很抱歉,我是捷克语:-)

你可能感兴趣的:(aot,android)