在之前的华为 P30 中国发布会上,华为曾表示通过方舟编译器可实现系统操作流畅度提升 24%,系统响应提升 44%,第三方应用操作流畅度提升 60%。其可以说是华为 P30 系列体验背后的最大功臣之一。
4 月 25 日下午,华为在北京举行了“华为有技术 EMUI 媒体沙龙”活动。在这次活动上,华为首次站在官方的角度,详细解释了 P30 系列在 EMUI 9.1 系统中所使用的方舟编译器的应用原理。
今天,小雷(微信:leitech)就在第一时间为大家解读华为这项新技术,看看方舟编译器到底神奇在何处。
首先我们要了解一下什么是编译器。简单来说,编译器就是将我们能够理解的语言翻译为计算机能够理解的以 0 和 1 构成的语言。
就像我们和外国人交流一样,语言不同是很难沟通的,但只要将其中一种语言翻译成对方能听得懂的语言,就能交流成功了。
华为方舟编译器最大的特点在于,它是业内第一款支持多语言联合优化的编译器,也就是说无论是 C/C++还是 Java 都支持。
因此面对采用混合语言开发的安卓应用,方舟编译器可以在开发环境中编译成统一的流程,通过统一的程序表示和优化来执行,效率更高。
也就是说,现有安卓的运行机制就像是两个人各自准备任务,最后将他们的准备的结果综合在一起执行。而方舟编译器则是让这两个人一起准备,之后再一同执行任务。
安卓系统本身的编译是要通过 ART 虚拟机运行,因此系统资源占用较大。而方舟编译器则是在开发的时候就已经完成了静态编译,因此不需要依赖手机本身编译。
打个比方,以开卷考试为例,一个学生是在考试之前就预习好了可能会考到的知识点,做好了对应内容的标记,拿到卷子就迅速动笔;而另一个学生则是靠“临场发挥”,在考场上临时翻阅资料,占用大量考试时间。
同时,方舟编译器还提供了更高效的内存回收机制。由于不需要经过虚拟机,应用在运行过程中不需要暂停,同时随时回收内存,而不是将垃圾堆在一起回收。
方舟编译器还有一大核心功能就是对代码进行优化。所谓代码优化,就是为程序带来更高的性能。
举个很简单的例子,就是同一个人考两次试,怎么才能让第二次比第一次考的更好,其实就是要对复习进行优化。
前面说到,现有安卓系统的动态编译是利用 ART 虚拟机在机器上执行,而方舟编译器则是在开发的时候进行静态编译。
因此,前者只能采用简单的优化算法,而后者可以突破手机机能限制,根据不同的应用采用不同的编译和优化算法。
最后,华为方舟编译器还有一大亮点是学习和使用成本低。由于在 APP 发布之前的打包阶段就已经集成了编译环境,因此对于开发者来说,整个流程其实是被简化了,使用下来更方便。
华为表示,方舟编译器将从 2019 年开始全面开源。这也就是说无论是手机厂商,还是应用开发者都可以使用方舟编译器来优化应用的性能。
总的来说,通过华为方舟编译器编译应用相比现有安卓的优势主要在于:
1、释放机器编译压力,在开发时完成应用的静态编译,不经过ART虚拟机。
2、采用不同类型的应用优化方案,让应用运行效果达到最优。
3、提供更有效的内存回收机制,提升系统流畅度。
4、简化编译流程,降低开发者学习和使用成本。
除了方舟编译器外,华为还介绍了让系统流畅运行的另外一大关键点,就是 EROFS 超级文件系统。
相比之前的 F2FS 文件系统,P30 系列所采用的 EROFS 文件系统可以提升 20%的随读性能,机身可用存储空间增加 2GB,并采用只读设计。
对比另外一个只读压缩文件系统 squashfs,EROFS 最明显的优势是几乎不存在无效读取。
但由于采用更安全的 EROFS,本质上 P30 的系统会比以前的华为机型更加封闭。EROFS 是一个完全只读设计的文件系统,其不允许用户像之前 Ext4 文件系统那样支持可读写,这样设备本身更安全,但可玩性会相对更低。
根据华为官方公布的日程,方舟编译器将于 2019 年 8 月的华为终端开发者大会上开源编译框架代码,并于 2019 年 11 月的绿盟开发者大会上公布完整的方舟编译器代码。
在小雷个人看来,方舟编译器是华为在解决安卓应用编译方面提供的一种全新的思路,理论上看是不错的方案,但就目前而言还无法验证得出 P30 系列是否在长时间使用后依然流畅的结论。
另一方面,方舟编译器能否真正得到大规模推广普及,目前也还很难说。毕竟每个应用开发商和手机厂商都有自己的考虑。不过可以确定的是,华为和荣耀未来的新机将很有技能会继续采用这个工具,我们不妨期待一下。
*已购买用户可加 Q 群:631042704
(加群时需提供交易单号)
记得帮忙点个“在看”哟
1、头条易读遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2、本文内容来自“Zealer订阅号”微信公众号,文章版权归Zealer订阅号公众号所有。