![1818dd93476876319c6648e081a06f98.png](https://img-blog.csdnimg.cn/img_convert/1818dd93476876319c6648e081a06f98.png)
在Honor 20系列新产品发布会上,华为提到“ARK编译器”是Android系统的革命性突破。
根据荣耀总裁赵明的说法,ARK编译器能够使Android系统具有可比性,甚至超越Apple的iOS,因为它具有“难以想象的速度和操作空间”。
在这里,他将ARK编译器描述为一个金手指。
据说:
“这是一个非常大的升级。我们一直期待Android系统能够超越iOS。在荣耀20系列被ARK优化之后,我们拥有了与iPhone相媲美的体验,甚至在某些方面我们更好比它。“
宣布之后,激烈的辩论开始在国内外引发。
那么,ARK编译器到底是什么?它是如何工作的?
首先,应该理解大多数Android应用程序都是用Java编程语言编写的,其次,Android设备的CPU只能理解汇编指令,而不能直接识别虚拟机指令的Java语言。
为了使CPU运行用Java编写的应用程序,通常有两种方法:
第一种方法是引入一个中间层,负责执行Java代码,然后将中间层本身编译成CPU可以理解的汇编指令。所以过程将是:CPU>中间层> Java代码。
第二种方法是将Java语言直接转换为CPU可以理解的机器语言。这可以通过在程序运行之前将Java代码直接编译为机器语言,或者将Java语言实时编译为机器语言来执行。
此模式称为JIT(及时)编译。
在Android操作系统上,代码编译必须经历几个阶段。并且使用ARK编译器,据说华为能够实现“架构级优化并显着提高性能”,并且可以解决android程序“解释时执行”的问题,这被首席执行官称为“android性能革命”
![845451cc283d5865feb7414641ce67e3.png](https://img-blog.csdnimg.cn/img_convert/845451cc283d5865feb7414641ce67e3.png)
在Android 5.0正式采用ART(Android Runtime)之前,它使用Dalvik来解释执行,使用JIT方法来执行Java代码。在这个阶段,它是真正的“解释和执行”模式。但由于代码效率很低,并且GC(垃圾收集)也很糟糕,因此Android很难使用。
在较新版本的Androids中,Google推出了ART来解决以前的Java代码执行效率问题。
在这个阶段使用完整的AOT模型; 安装Android应用程序后,所有Java代码都会提前编译为机器代码。
但是,这种模式有两个缺点:
安装速度很慢。即使是Qualcomm Dragons 855也可能需要一分钟才能在AOT模式下编译更大的应用程序。
系统的OTA为在所有应用程序上执行AOT操作提供了机会,这可能需要很长时间才能启动。
从Android 7开始,Google通过让操作系统在用户使用应用程序时仅编译部分代码来改进这一点。简而言之,当用户仅在其功能上使用分数时,Android 7及更高版本不会编译所有代码。
而从Android 8开始,Google进一步完善了编译器,大大提高了解释模式的执行效率。在Android 10上,Google开始提供预安装热代码的方法,以便应用程序可以知道在安装时预编译公共代码。
因此,Android平台的执行模式在空间使用,安装速度和运行速度之间达到了良好的平衡。
但是,它并没有摆脱应用程序在打包为ARK时使用Java代码的前提。
换句话说,当ARK成为用户可配置的进程时,它会经历Android系统内的编译过程,这是一个障碍。
根据华为的解释,这个现有Android的障碍,称为虚拟机。也称为VM,它包含翻译器和编译器。其目的是将Java转换为可以理解语言的机器,这会减慢操作速度。
在这里,华为的ARK编译器希望解决这个问题。
![9f26850c0d1c54fcaba0c025ce7aba4c.png](https://img-blog.csdnimg.cn/img_convert/9f26850c0d1c54fcaba0c025ce7aba4c.png)
Dalvik和ART架构的比较
华为ARK编译器的最大优点是绕过了虚拟机。
简而言之,ARK编译器可以将高级语言(Java)直接转换为机器代码,而无需通过Android操作系统内置的VM编译器。
据华为介绍,ARK编译器编译的应用程序是在开发阶段完成的,只要它是编译器编译的应用程序,在应用程序市场上架后,用户下载的ARK就是编译的。
换句话说,通过ARK编译器,开发人员的应用程序在下载之前已经转换为机器可识别的代码,因此可以在手机上快速安装,启动和运行,而无需通过VM进行编译,或者至少对某些应用程序进行编译程度。
使用ARK编译器,华为正在将编译过程推进到应用程序开发阶段,从而显着降低智能手机和Android操作系统的运营负担。
除了代码编译之外,ARK编译器还提供了更高效的内存机制,这与Android内存不同。
虽然Android使用集中式回收机制进行内存收集,但ARK编译器提供了更高效的内存恢复机制,无需在任何时候暂停应用程序并将其恢复。
ARK编译器还可以优化代码:因为它是在应用程序开发阶段编译的,编译器可以允许不同的应用程序灵活地进行不同的编译优化。
由于开发环境中的编译不受手机性能的限制,因此可以使用更高级的优化算法来优化每个应用程序的性能。
华为公司声称,经过处理,应用程序执行效率提高了29%,系统运行流畅度提高了24%,系统响应率提高了44%,第三方应用程序运行流畅度提高了60%。
另一方面,EROFS文件系统可以将系统的随机读取速度提高20%,并且可以节省高达14%的存储空间,从而最大限度地利用设备有限空间内的资源。
由于Android的性质和其他原因,华为不会持有ARK编译器的任何使用权。这意味着,华为希望保持项目开源,供业界使用。华为预计应用程序开发人员很快就会开始使用这款针对Android的新改进编。