荣耀,老熊随笔:聊聊我眼中的方舟编译器

来源:荣耀
荣耀
老熊随笔

2019年5月31号,我们在上海东方体育馆发布了数字旗舰荣耀20系列手机,顶级配置+全时全焦段四摄。配置就不多罗列,大家应该看了很多。不久前和2012实验室的同事聊天时意外发现,大家对方舟编译器的关心程度甚至超出产品本身,今天就跟大家聊聊。


在Android 5.0版本以前,Android采用Dalvik虚拟机,在边解释边执行的同时,引入JIT即时编译器,能够在程序运行阶段将部分频繁调用的Java代码编译为机器码,但代码执行效率还比较低下。在Android 5.0至Android 6.0阶段,Google推出了ART(Android Runtime),使用AOT编译器解决之前的Java代码执行效率问题。Android应用在安装时,会把部分Java代码提前编译为机器码。不过这种模式有两个缺点:安装速度慢,占用磁盘空间。


Android 7.0采用了AOT+JIT解释执行的混合模式,以达到安装时间、空间占用和性能之间的平衡。


目前Android依然存在边解释边执行的代码运行方式,Google也多次调整编译代码的模式,但是相比iOS依然有性能差距。



那么,什么是方舟编译器呢?


编译器是连接人类世界与机器世界之间的一座桥梁,任何在手机上的程序都需要经历软件开发的过程,软件开发使用的语言是易于程序员理解的“高级语言”,程序在手机上运行需要转换成可以高效执行的机器码,这一转换过程由编译器完成。简单来说,编译器将“高级语言”翻译为能直接被计算机或虚拟机执行目标代码,它的效率直接影响程序运行性能和效率。



方舟编译器最大的优势在于绕过了VM


从5年前开始布局编译器技术,聘请世界顶级的编译专家,投入了数百人专家团队才攻克了编译器技术。


方舟编译器是首家完全替代语言虚拟机的静态编译器,完全不需要解释器,是兼顾Java开发效率和C语言运行效率的编译器。相比现有的编译机制有以下优势:


1.方舟编译器是一种静态的编译方式,而现有的安卓系统,运行一个应用程序首先启动虚拟机,然后读入应用程序代码,逐条解释执行。这会占用较多的处理资源,影响程序执行的效率。


2.方舟编译器的静态编译方式可将语言里的动态特性直接翻译成机器码,手机安装APP后可全速运行程序,彻底消除虚拟机的弊病,极大提升效率。


3.方舟编译器是在开发环境部署的编译器,而现有编译过程主要发生在手机上,带来额外的资源消耗。




基于以上几点,

方舟编译器能带来系统性能的显著提升。


1.EMUI 9.1对系统主要服务System Server进行静态编译化,带来了系统流畅度提升24%,系统响应性能提升44%以上的收益。


2.微博极速版实现了静态化编译后,流畅度提升高达60% 。



目前方舟编译器针对通用ARM芯片架构进行编译优化,未来将通过软硬件协同设计,将麒麟芯片的能力发挥到极致。同时方舟编译器支持Java标准用法,三方应用可直接进行编译,不需要修改代码。如果希望获得更加好的性能或内存方面的提升,可以通过调整代码结构,与方舟编译器配合优化来实现。



我们已决定将方舟编译器对外开源,三方应用开发者可参与到方舟编译器的开发使用中,提升应用的性能,进而提升全行业的应用性能,给消费者带来无处不在的极致体验。


另一方面,把广大的应用开发者和手机厂商引入进来,也能将方舟编译器做得更大,共同将安卓体系做得更加强大。方舟编译器是个通用技术,不仅用于安卓,也可以适用ICT行业。


我们会在下半年举行的华为终端中国开发者大会和绿盟中国开发者大会上,公布并推进方舟编译器的具体开源事宜,欢迎广大的应用开发者积极参与。


内容转载自荣耀,如有侵权请联系删除。