快捷搜索:

深度解读华为EMUI9.1带来的技术创新产物:华为方舟编译器和EROFS超级文件系统

4月25日,华为EMUI媒体沙龙在北京召开,华为消费者BG软件部总裁王成录博士向参会媒体详细介绍了华为EMUI 9.1系统。EMUI 9.1通过华为方舟编译器和EROFS超级文件系统两大技术创新,结合开放生态共同助力用户体验的提升。

EMUI的前世今生

从2012年EMUI1.0的合一桌面,到2016年EMUI5.0的“天生快,一生快”,到2018年EMUI8.2的GPU Turbo,再到EMUI9.0的Link Turbo,以及目前最新的EMUI9.1超级文件系统和华为方舟编译器,EMUI在不断的创新发展中做到了反哺整个安卓产业,不断输出优秀成果。EMUI一路走来,一直致力于提升用户体验,用户体验永远是华为思考一切问题的出发点。目前EMUI服务着全球216个国家和地区,日活跃用户到达4.7亿。

图片25.jpg

华为方舟编译器是什么?

编译器是连接人类世界与机器世界的一座桥梁,起着翻译官的重要作用。简言之编译器就是把编程人员开发的高级语言程序,翻译成机器可执行的机器指令,这就是编译器。而要想把编译器做好,既要懂原来的高级语言,又要懂所看到的硬件平台。必须对整个机器的CPU、GPU所有的指令要熟悉,又对目标语言要非常熟悉。就像一个翻译官,把中文翻译成英文,至少要对中文英文都非常理解。

图片26.jpg

十年磨一剑的技术积累

华为从2009年就开始创建编译组,源于在研发海思芯片以后,需要有自己的编译器才能真正发挥芯片的能力;2013年,华为推出了自研编译器HCC; 2014年,Fred Chow等诸多编译器领域的资深专家加入华为,搭建了华为编译器的主架构;2016年,有了成功的实践经验以后,华为2012年实验室成立了编译器与编程语言实验室;2019年,经过十年的积累沉淀,终于推出了华为方舟编译器这个“板凳要坐十年冷”的复杂工程。

图片27.jpg

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

图片28.jpg

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

图片29.jpg

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

图片30.jpg

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

图片31.jpg

您可能还会对下面的文章感兴趣: