华为方舟编译器是怎么改变安卓底层架构的?
P30系列中国发布会上,华为推出方舟编译器,可以做到在安卓底层优化架构,引起业内关注。
中兴事件后,安卓系统禁用的风险屡屡被探讨。此前,华为曾表态,自己有手机系统备份,但不到万不得已不会启用。
当然,方舟编译器并没有取代安卓系统,而是跟安卓系统进行深度合作,以这种方式来提升华为手机的体验,并提升华为对抗风险的能力。
编译器是一种语言(通常为高级语言)翻译为另一种语言(通常为低级语言)的程序,可以将源代码翻译成可以被计算机或计算机或虚拟机执行的代码。
华为方舟编译器可供开发者,在开发环境一次性将高级语言编译为机器码,可以让手机安装的APP运行效率明显提升。
据华为实验室测试数据,EMUI 9.1在仅仅对系统组件System Server应用了华为方舟编译器后,系统操作流畅度提升24%,系统响应性能提升44%。新浪微博极速版是第一款采用方舟编译器的第三方应用,操作流畅度提升60%。
华为为什么要做方舟编译器?
4月25日,CBG软件部总裁、王成录博士在采访中解释:
王成录打了一个个比方:假设手机是一个人,过去这个人身体体质弱容易得病,但是今天把这个人身体锻炼好了非常强壮了,但是吃的东西没有保障。从应用市场下载的东西有问题,这个人免疫力再好,也难免受食物所累。
手机内部的资源是有限的,要想取得好的用户体验,就要对系统硬件资源机型合理调配。华为先后发布了多种新技术,包括AI芯片、GPU Turbo、Link Turbo来提升手机性能。在此之后,编译器成为安卓机性能提升最大的难题,为了攻克这一难关,华为推出了方舟编译器。
做编译器是一个非常复杂的工程。据王成录介绍,华为2009年就开始为编译器做准备,2013年有了自己的编译器HCC,2014年引入了Fred Chow等技术大牛,来做华为编译器的主架构。此后,2012年实验室成立了编译器与编程语言实验室,今年4月推出了方舟编译器。
相比于安卓原生系统,方舟编译器可以明显提升系统运行效率:
首先,它是多语言联合优化编译器,消除跨语言调用开销,这是影响Android性能消耗较大的核心原因之一。
其次,把虚拟机去掉了,内存回收机制。“我们在内存回收上,华为现在这方面做的比Android领先的非常高,内存回收的机制和效率非常高。”王成录表示。
虚拟机是安卓系统的关键部分之一。虚拟机可以帮助安卓系统适配各种处理器,实现跨平台操作, 不管是X86机器,还是ARM机器,或是其他CPU的机器都没有问题。但这样一来,只要装上安卓系统,虚拟机也会占用额外的系统资源。
“我们编译器的目标是上层业务代码不需要改,大家只需要通过方舟编译器重新编译就足够了。现在还需要开发者作一些对接,但很快随着一些APP进来,这个目标很快就能实现。”
据王成录介绍,方舟编译器目前是基于ARM指令集开发的,适用于所有ARM平台,不限于安卓,未来可基于具体芯片指令集进行开发。华为方舟编译器会在2019年全面开源,现在百分之八九十的第三方应用,可以在一天内编译完。
其实,要在安卓系统底层进行优化,除了技术难题外,关键在于如何跟谷歌达成合作。
2012年,谷歌反对宏碁生产搭载“阿里云”操作系统的智能手机,并宣称要取消其相应GMS授权,因为基于安卓框架的阿里云OS曾去掉了谷歌的虚拟机,采用自行研发的虚拟机。由于谷歌的反对,此事就此搁浅。华为则跟谷歌达成了合作,在华为手机系统国内版本上,可以采用方舟编译器。
王成录也表示,华为在安卓底层的优化工作,是产业的共同资产,华为愿意将方舟编译器贡献给整个安卓生态,这个过程需要谷歌、手机厂家、应用开发者一起努力,让编译器更加完善。此外,如果有可能的话,这个编译器基础上,华为希望能够对现有的高级语言做一些扩充和修改,甚至于定制,这样这种语言在固定平台运行效果最好。