首页 > 科技圈 > 正文

华为方舟编译器将开源 安卓手机卡顿能被解决了吗?

记者

记者|唐健博

在P30系列手机上海发布会上,余承东公布了华为在系统方面两项研发成果——超级文件系统EROFS和华为方舟编译器。在会上,余承东称,采用EROFS的系统能让随机读性能提高20%,系统空间节省14%;而应用方舟编译器后,系统操作流畅度提高了24%以上。

Android系统长时间使用之后便会卡顿,这一问题一直被用户诟病。华为所发布的两项技术便是朝着解决该问题去的。华为方面称,在当天方舟编译器发布之后,华为OpenLab(开放实验室)的电话就被打爆了,许多开发者都想了解方舟编译器更多信息。

机器网 www.shi-fen.com

事实上,不仅是开发者对该技术感兴趣,部分极客用户同样十分关注Android系统的流畅度能否因此得到提升。

超级文件系统EROFS是什么?

在Android系统底层,传统的文件系统是EXT4(Fourth extended filesystem,第四代扩展文件系统),原本适合机械硬盘,它支持系统双向读写。在压缩过程中,文件块是定长输入,磁盘块变长输出。好比3吨的串号文件交给2吨的货车运输,其中1吨只能交给下一辆车,但读取时则必须把两辆车合起来才能工作,直接导致读取效率降低。

在系统长时间使用之后,会残留许多数据碎片。随着碎片垃圾增多,对于系统运行的影响就会变大。EXT4对于碎片垃圾的清理能力上较弱,因此会出现时间长之后手机卡顿的情况。

事实上,Google也做过相应的努力,曾经推出过SquashFS,一套供Linux核心使用的GPL开源只读压缩文件系统。但后来应用到系统上之后效果不尽人意,最终撤掉了。

华为CBG软件部总裁王成录在最近一次交流会上表示,EMUI 9.1所采用的文件系统EROFS(Extendable Read-Only File System,可扩展的只读文件系统)便是旨在解决系统分区文件储存与管理问题。其核心在于通过文件系统的只读属性,保证系统分区一直保持初始化的文件,除了系统更新之外,禁止被写入其它东西。以此保护了系统的安全性。

在压缩算法上,EROFS的文件块是变长输入,磁盘块定长输出。若还按照货车运输的例子来打比方,就是压缩3吨的文件交给3吨的货车,每一辆货车都满载出发。但事实上,EROFS采用了fixed-sized output文件压缩算法,压缩后的物理块大小为固定值(4k),每一个数据包都是4k。

华为称,EROFS的专利压缩算法几乎不存在无效读取,其随机读性能平均能提升20%,且系统空间相比 EXT4节省2GB(P30 Pro 128GB为目标对象)。升级包大小下降约5%-10%,升级时间缩短了约20%。

“EROFS文件系统已经开源了,Linux下一个4.19版本就会用这个文件系统。”王成录博士说道,“业界内用Linux新内核版本的厂家都可能用到这个文件系统。这也是国内厂商第一次贡献完整的文件系统到Linux主线版本。”

方舟编译器能做什么?

首先我们要知道,所有机器程序都有自己的语言,和全世界讲的语种类似。编译器便是把编程人员开发的高级语言程序,翻译成机器可识别的指令,翻译的效率将直接影响机器执行指令的效率。

“由于Android的开放性,上层应用没有强制规则。比如Android的第三方应用市场非常多;Android的安装方式也非常多,通过邮件都可以安装。带来的(不稳定性)问题比较多。所以Android用户要真正能够获得好的体验,手机厂家只把手机做好是不够的。”王成录博士说起了目前Android软件生态的问题。

由于这个生态无法像iOS生态那样高度标准化,因此软件存在各种编译方式,甚至是层次不齐的软件质量。方舟编译器的意义在于通过手机厂家和生态的合作,把用户软件体验做好。

方舟编译器所采用的翻译方法,与此前的编译器有所不同。

现有的Android系统是在手机环境中进行编译,通过ART虚拟机(Android Runtime)一边翻译一边执行,这会造成资源占用过多,进而影响到程序执行的效率。

机器网 www.shi-fen.com

方舟编译器则能让开发者在开发过程中直接把多种高级语言编译为机器可识别的指令,然后打包成APK,手机在安装程序之后便可直接识别并运行程序。从而提高软件的运行效率。

王成录博士介绍说,方舟编译器总共有4个技术亮点:

首个多语言联合优化编译器,可消除跨语言调用开销;程序运行无需依赖虚拟机,内存回收机制高效;可针对不同应用灵活优化;开发者学习和使用成本低。

其中第二点对于用户来说,系统的运行改善是直观的。由于没有了ART虚拟机占用系统资源,且不用虚拟机编译过程,程序的运行效率将会得到提高。同时,由于方舟编译器在编译时为程序配备了及时回收的内存处理机制,相较于之前系统需要全局暂停才能回收资源的方式,系统在运行的流畅度上得到了提升。

余承东曾在P30系列发布会上表示,新浪微博极速版在应用方舟编译器之后,操作流畅度提升了60%以上。

不过显然通过华为一家厂商是做不到全部软件的覆盖的。王成录博士表示:“实际上这件事情,只靠华为一家不可能实现,我们非常希望Android阵营所有合作伙伴大家一起努力。这次方舟编译器我们承诺要跟业界开源最核心的原因,是希望大家从各自场景各自平台去应用,让Android手机体验越来越好。”

什么时候能用上?

目前EROFS文件系统已经随着EMUI 9.1系统面世,华为P30系列手机已经搭载该文件系统。

事实上,华为对Android系统底层的改动,3年前就有所体现了。不过那时候针对的是Android系统的用户分区,而EROFS文件系统针对的是系统分区。

2016年华为P9从EXT4变成了F2FS文件系统。“F2FS本身是为Flash闪存专门定制的文件系统。经过多轮的技术验证,我们最终把F2FS用在EMUI 5.0上,发现上手机的碎片减少了非常多,对系统的流畅性贡献很大。”王成录博士说道,“后来Google将F2FS吸收到了社区,Google的手机(Nexus系列)也采用了这个系统。”

由于方舟编译器需要各方开发者的共同努力,用户想要体验到方舟编译器所做的软件,还需要耐心等待。华为表示在P30系列发布会上宣布开源之后,今年将会在11月份的绿盟开发者大会上开源完整的方舟编译器代码。

不过在此之前,华为在编译器上已经准备了10年。据华为方面透露,2009年华为创建了编译组,同年海思的第一颗麒麟芯片诞生,随后在2013年正式提出编译器框架构想。此后经历了多名技术人才的引进,到今年才得以开源方舟编译器。王成录感慨道:“编译器真的是一个‘板凳要坐十年冷’的工程。”

相关阅读:
格力待嫁:股权转让扑朔迷离 珠海国资委称方向正确 河南破获一起特大窃电案 挖矿1天耗电4万度