4月11日,华为P30发布会上,全新的EMUI9.1系统随P30上线,并为华为和荣耀的多款机型提供beta测试。相信很快就会正式全面推送。相比EMUI9.0和其他安卓手机厂商的系统,EMUI9.1通过两项革命性的创新——EROFS Hyperfile系统和Ark编译器,真正从系统底层提升了运行速度,让安卓彻底摆脱了“一年卡成狗”的帽子。
文件管理系统影响系统运行速度。

手机操作系统的运行速度是由硬件和软件决定的。随着手机CPU频率高于2.0G GHz,RAM动辄达到6G甚至8G,硬件不再是阻碍手机操作系统运行速度的关键因素。
因此,更好地优化软件可以大大提高系统速度,其中文件管理系统的创新和优化至关重要。文件系统负责为用户创建文件,存储、读取、修改、转储等。它控制着文件的访问,也决定着手机操作系统的速度。
基于Linux开发的Android操作系统中,最早使用的是Linux-EXT4的标准文件系统。由于Linux以前大多运行在机械硬盘上,所以Ext4的存储结构也更适合机械硬盘。手机的存储介质都是闪存。
2012年,出现了专门为Flash开发的“Flash友好文件系统”文件系统。但其稳定性一直较差,因此长期没有大规模使用。直到2016年华为发布Mate9,优化后的F2FS文件系统才第一次应用到EMUI5.0上,使得Android操作系统的整体运行速度提升了20%。
但是F2FS只是针对手机中的用户分区,就像电脑的D盘一样。但是,运行操作系统只读文件的系统盘不支持它。系统盘的文件系统还是用EXT4。
2018年6月,华为再次发布了Linux只读文件的新文件系统——EROFS。这种新的文件管理系统具有较高的压缩率和运行效率。
根据华为实验室公布的实测数据,当文件压缩率为4%时,提升了172%。直到2019年华为发布P30,在新的EMUI9.1上使用了经过多次优化的EROFS,这也让P30在执行系统文件时达到了4%的压缩率,读取性能相比之前的文件系统提升了300%。
同时为手机发布了2G存储空间空,可以用来存储更多的照片、视频、歌曲和文件。
由于EROFS具有更高的压缩率,在手机的整个生命周期中,即使多次获得厂商推送的升级包,也不会导致RAM被大量占用的窘境。
更高的压缩率和更高效的读取速度,让EROFS成为移动操作系统最快的随机读取文件系统,完全取代Ext4。

从搭载EMUI9.1的P30实测来看,手机系统流畅度和APP打开速度都有了很大提升,完全可以媲美搭载iOS12的iPhone XS Max。
编译机制影响APP的运行速度。
对比之前的安卓手机和iPhone,我们总能发现在应用启动速度上有或多或少的差异。这很大程度上是由于两个编译器的工作原理不同。
操作系统中“编译器”的作用是将程序员用高级语言编写的代码转换成机器可读的机器语言。
iOS APP之所以比Android启动快,和编译器的不同有很大关系。IOS开发使用Object-C和Swift语言。两种语言的代码通过编译器直接生成机器码,机器码可以直接在CPU上执行。
而Android应用是用Java语言编写的,运行Java虚拟机需要花费更多的时间将代码翻译成机器语言。Android4.4之前,谷歌用的是Dalvik虚拟机。在Dalvik下,应用程序每次运行都需要通过即时编译器将字节码转换成机器码,这会拖慢应用程序的运行效率。
此后,谷歌用ART虚拟机取代了Davlik。艺术是AOT的编译器。AOT是指在运行前将字节码静态编译成二进制机器码,相比JIT可以提高执行效率。ART的缺点是仍然没有摆脱Java虚拟机机制,编译执行应用的效率没有得到充分发挥。而且机器码占用的内存空更大。字节码变成机器码后,可能会增加10%-20%,应用安装时间过长。而且内存回收机制效率不高。
华为新发布的EMUI9.1系统采用的“方舟编译器”,和Google ART一样,也是基于AOT编译器打造的。而Ark编译器完全摆脱了Java虚拟机机制,采用静态编译技术,将所有高级语言字节码提前编译成二进制代码,直接让CPU运行。
同时,Ark编译器采用了类似iOS的RC引用计数内存回收机制,不同于Android常用的GC内存回收机制。RC引用计数算法回收内存的工作原理是实时判断应用对象的引用计数。当它为0时,对象将被反初始化和恢复。如果两个对象相互引用,会造成循环强引用,从而导致内存泄漏。

GC的工作原理是根搜索算法回收内存。该算法以GC根为起点进行搜索,通过搜索的路径称为引用链。当一个对象没有被GC根的引用链连接时,该对象将被回收。即使两个对象A和B相互引用,只要A和B不在引用链中,这两个对象都会被回收。
显然,RC回收机制更科学,它可以实时判断对象的状态,实时回收内存。而GC每次都是从起点开始搜索,更像是一种集中式的操作,效率比RC的低,这也是手机卡顿的一个重要原因。
在P30上,方舟编译器开发的微博极速版速度比之前提升了60%。这充分证明了新方舟编译器能够有效提高APP的启动和运行效率。
Superfile Manager和Ark Compiler作为Android底层的创新功能,需要被更多的开发者采用,才能真正达到优化系统和应用的目的。所以华为对Hyperfile Manager和Ark编译器都采取了开源的方式,让更多的开发者可以使用,最终实现Android的整体体验优化。
有了这两项技术的开源,相信不仅华为的安卓手机可以摆脱卡顿的阴影,或许整个国产安卓生态系统都可以扔掉“一年卡成狗”的帽子。让我们拭目以待!


