《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 华为方舟编译器的四大技术亮点

华为方舟编译器的四大技术亮点

2019-06-30
关键词: 华为 方舟编译器

pIYBAFzCfh2Ac5IZAABEScl1Td8536.png

  第一,多语言联合编译和跨语言调用开销是影响Android性能开销的最核心原因之一,目前Android应用市场里面Top级别的APP 95%以上都是由多种开发语言来实现的。举例说明,这些APP的逻辑部分是Java代码,但是为了增强app应用的安全性、可靠性、兼容性,开发者会用效率更高的C语言写库,供Java来调用。直接导致的结果是应用真正运行起来的时候,一定会有Java和C语言之间调用问题,就会形成额外的性能开销。而方舟编译器在不同语言代码的开发环境中,就编译成一套可执行文件,在运行环境中高效执行。

  第二,Android从诞生那天起,就选择了Java这个成熟的语言,Java语言有跨平台、分布式,安全性高等诸多优势。但是随之应运而生的还有Java语言开发包中的重要组成--虚拟机,无论是什么样的硬件,Java语言都不需要管,统统抽象成Java的运行环境,因此可以跨平台操作。这个又带来另外一个问题,任何机器只要把应用装上就会分配好虚拟机,占用额外的系统资源。今天的Android应用市场中的APP,实际上都是DEX码的文件,消费者从应用市场下载APP以后,真正解释成机器指令和执行文件是在手机上的虚拟机里做的,因此对系统资源要求高。安卓自身的编译技术在不断的发展,但始终需要在运行中依赖虚拟机来进行动态编译和解释执行,对系统资源消耗较大。

  而方舟编译器在开发环境中就可以完成全部代码的编译,无论业务逻辑是Java写的还是C语言写的,不需要再次编译,手机安装应用程序后无需依赖虚拟机资源,即可全速运行程序,带来效率上的极大提升,消除了影响性能的虚拟机机制。EMUI 9.1仅仅对系统组件System Server应用了华为方舟编译器后,就带来了系统操作流畅度提升24%,系统响应性能提升44%的收益。华为方舟编译器提供了全新的系统及应用的编译和运行机制,从动态编译变为静态编译,就是直接将高级语言直接编译成机器码,消除了虚拟机动态编译的额外开销,实现了开发和运行效率的兼容并举。

  内存回收机制是另一个方舟编译器的重大技术突破。Android系统在全局回收内存资源时,需要暂停应用等待回收完成,这是产生随机卡顿的重要原因。而在方舟编译器里,在编译时为程序配备了及时回收的内存处理机制,即在程序执行过程当中同步实时处理回收。所以方舟编译器的垃圾回收及时又彻底,并且不需要停止进程。

  第三,编译器和翻译语言的原理是一样的,单独直译出词句并不是难点,难得是要翻译的又快又好。比如把英文“What happens in Vegas, stays in Vegas”翻译成中文,最简单的直译是“在拉斯维加斯发生的一切,就留在拉斯维加斯”;好一些的译文是“事情过去了就过去了,追悔无益”;而优秀的译文则是“勿念过往,活在当下”。方舟编译器通过了大量的优化和调整,一方面对Java语言深入了解后再细致重建,另一方面对机器指令顺序结构理解要求非常清晰,这两方面的匹配度越高,编译器效率越高。一个好的编译器,开发者一行代码都不需要修改,性能能提升10%到20%。

  方舟编译器跟现有的Android非常不一样,能做到更加灵活更加深入的优化,给应用开发者带来了更大的优化应用的机会。现有的Android编译大部分代码在虚拟机环境运行,虚拟机的创建来自于同一套“模板”,但不同应用的优化诉求不一样,因而难以作深度的优化,方舟编译器则是每个应用编译优化方案自己来定,分别形成不同应用优化后的机器码,每一个应用开发者都有了把自己的应用做的更好的机会,不再受限于Android虚拟机的限制。

  第四,方舟编译器从多年前决定做的那一刻起,就立下了上层业务代码不需要改动,开发者只通过华为方舟编译器做可以重新编译的目标。现在开发者不论用Java语言去开发新的APP,还是自己写的C语言库,这两种方式都不需要变,从而大大降低了开发者学习和使用成本。


本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。