中国新说唱女选手被黑 华为方舟编译器原理已公布应当如何看待

2019-11-09 20:51:31

在华为P30系列手机的发布会上,有三页PPT,是讲方舟编译器的。这三页内容,在P30系列手机的光环下并不出众,但却堪称是一场安卓的性能革命,将颠覆安卓系统的体验。最近,我与华为消费者BG软件部总裁王成录博士进行了深度交流,试图了解方舟编译器、EROFS超级文件系统以及华为消费者业务软件业务的最新动向。方舟编译器:在底层重造安卓系统体验据王成录透露,在方舟编译器发布当天,电话被打爆了,业界的开发者都高度关注。为什么会这样?因为方舟编译器是对安卓底层机制的重构,给用户体验带来的提升是颠覆性的。它解决的是安卓手机上最大的痛点:“卡顿”。编译器,就像是人类和机器沟通的桥梁,承担着将高级语言“翻译”成机器能懂的机器码,并按照指令运行。但是,在安卓系统中,编译器却有一个绕不过的坎儿:虚拟机。安卓系统虽然在不断演进,但始终需要虚拟机来实现解释和执行。?用翻译的方式来比喻,更容易理解。安卓程序的虚拟机中有解释器和编译器,相当于是有两个翻译在运行。解释器好像现场翻译,演讲者讲一句,就需要停下来翻译一句给编译器,编译器则结合上下文一次翻译一大段。两个翻译同时在搞,于是你听到的内容就是断断续续的,你的系统就会变得非常卡顿。而且,虚拟机的统一回收内存也是卡顿的罪魁祸首之一,Java的虚拟机模式提供了内存GC(垃圾回收)机制,内存垃圾是集中回收,但全局回收时需要短暂中断应用,成为随机卡顿的根因之一。那么,方舟编译器带来的颠覆在哪里呢?首先,方舟的内存回收机制是随用随回收,回收时无需暂停应用,因内存回收的随机卡顿就消除了。其次,方舟编译器是在应用打包的时候直接编译出了机器指令,无需繁琐的虚拟机运行,彻底消除了虚拟机的动态编译的额外开销,从边翻译边执行到提前编译机器码直接执行(运行时无需再编译),大幅提升了效率,让性能得到大幅提升。用量化的方式可以很好地看到这种性能提升的效果:有了方舟编译器的手机,能实现系统操作流畅度提升24%,系统响应性能提升44%。能实现这样的效果,方舟编译器的内存回收机制也功不可没。原来虚拟机的内存回收是统一进行的,全局回收时需要暂停应用(导致卡顿);而方舟编译器则是内存随用随回收,回收时无需暂停应用,显然能够避免卡顿。方舟编译器看起来深奥,但是对应用开发者和用户来说却很简单。王成录说,对于应用开发者无需修改代码,只需要用方舟编译器重新编译,就能带来性能的提升。对于用户来说,只要在应用市场下载编译过的应用,就直接能享受到性能提升的好处。重新编译,会带来应用安装包和安装后占用空间的增大,以微博极速版为例,安卓9.0的apk是9.7Mb,安装后是37.5Mb,而使用方舟编译器后的安装文件apk是23Mb,安装完后大约不到50Mb。但是,使用方舟编译器后的性能提升却是颠覆性的,微博极速版的操作流畅度提升了60%!一句话,方舟编译器给安卓程序的性能提升结果非常显著。这个性能提升可以用应用执行时间来衡量,而应用执行时间=应用执行指令总条数X平均每条指令所用CPUcycle数/CPU频率,CPU频率由手机硬件决定,方舟编译器可以实现平均每条指令所用CPUcycle数更少、应用执行指令总条数更少,从而带来更快的应用执行时间。同样用翻译来比喻这种编译带来的性能提升。““WhathappensinVegas,staysinVegas”如果比作最初的应用,如果不编译,翻译可能是“在拉斯维加斯发生的一切,就留在拉斯维加斯”,而方舟编译器编译带来的则是“勿念过往活在当下”,显然要好得多。板凳要坐十年冷,优化安卓系统是持久战方舟编译器火了,但是宝剑锋从磨砺出,梅花香自苦寒来,这一切,来自于“板凳要坐十年冷”的坚持和努力。王成录透露,早在2009年,华为就创建了编译组,因为海思做了芯片以后,需要有自己的编译器才能真正发挥芯片的能力。从2013年开始,华为推出了自己的编译器HCC,用在基站领域,这可以说是方舟编译器的前身。到了2014年,以FredChow等为代表的众多技术人才加入,在2016年华为成立编译器与编程语言实验室,一直到现在推出方舟编译器。编译器作为系统软件,真的是一个“板凳要坐十年冷”的工程,稳得住才能做下来,非常的复杂。王成录感慨地说,中国有众多软件研发人员,但国内一直缺乏领先的系统软件,因为大家基本上都集中在应用软件领域,我希望中国的软件人员能共同努力,能把中国的系统软件做好,中国软件未来的希望,是一定要有自己的系统软件,这样中国的软件行业才能真正做强做大。事实上,回顾华为EMUI系统的发展史,就是一部安卓系统的优化史,也折射出华为“板凳要坐十年冷”的精神。从EMUI5.0系统的“天生快,一生快”,到EMUI8.2的GPUTurbo,到EMUI9.0的LinkTurbo,再到现在的方舟编译器以及EROFS超级文件系统,都是如此。说到这里,要多说几句EROFS超级文件系统,这也是和方舟编译器类似的底层颠覆性技术。EROFS超级文件系统使用专利压缩算法,几乎不存在无效读取。它让随机读性能提升了20%,系统可用空间多2GB。而且,只读设计,让系统分区更加安全。王成录说,我们每走一步,大家看到的是发布黑科技,但华为不是无意为之,我们一直在围绕性能这条线找最主要的矛盾,去解决。例如,EMUI5.0解决的是最核心的卡顿问题,GPUTurbo解决的是游戏流畅度问题,LinkTurbo解决的是网络连接问题等等。那么,现在最新的EMUI系统和iOS相比处于什么状态呢?王成录说,EMUI9.1的DNA和iOS已经几乎一样,目前EROFS文件系统、通信、连接模块已经领先iOS,未来,EMUI会有更多模块追赶iOS,甚至超过iOS。后记:未来更是一场生态战诚然,安卓系统要想真正超越iOS的体验,需要有两个战场,一个是深度技术的创新战场,另一个是开放生态的生态战场。一方面,通过方舟编译器、EROFS超级文件系统、LinkTurbo、GPUTurbo等一系列的深度技术创新,华为的EMUI系统正在接近,甚至在某些方面超越iOS的体验。另一方面,华为也在开放生态上进行布局。以方舟编译器和EROFS为例,华为都选择了向业界开源。据了解,方舟编译器将在今年8月举行的华为终端开发者大会上对框架代码开源,开发者可以研究参考;将在今年11月的绿盟开发者大会上将完整的方舟编译器代码开源,开发者可以编译使用。王成录说,方舟编译器是个通用技术,目前是基于ARM指令集开发的,适用于所有ARM芯片平台,不限于安卓;可以适用ICT行业。未来可基于具体芯片指令集进行开发。甚至所有的安卓手机厂商都将从中受益。方舟编译器编译过的应用,可以适用于其他安卓手机,这让其他安卓手机用户也将获益匪浅。这点听上去有点“无私”,但仔细思量,却是付出即收获。安卓手机的整体体验比苹果要好,有利于包括华为在内的所有厂家。“实际上做这件事情,只靠华为一家不可能实现,我们非常希望Android阵营所有合作伙伴一起努力,这是华为将方舟编译器向业界开源最核心的原因,希望大家将这个编译器从各自场景、各自平台,不断去打磨它,才能实现最终给用户带来最好体验的理想目标。”王成录如此说。安卓系统因为华为的参与,正在变得越来越好,这中间不仅有努力,更有决心。王成录透露,文件系统F2FS在EMUI5.0更换时,自己在内部签了军令状,因为这个工作实在是风险极大,但是华为内部做了大量的测试,才让这个更换工作有惊无险。“简单来说,三年前,我们70%的东西是跟随Google,他们做了很多贡献,我们受益很大,但是今天我们也有很多创新点反哺给原生安卓系统,包括我们的F2FS、无线投屏等创新技术点都有反哺原生安卓系统,使安卓变得更好。”未来的华为EMUI系统将是什么样?除了深度的技术创新,也在走向开放的生态。其一,是让业务更丰富,AI就是其中的典型,华为从做AI的第一天起,就把AI所有能力开放给第三方,使能现在的应用更丰富更强大;其二,是让体验变得更流畅,方舟编译器、LinkTurbo等也在走向开放;其三,是走向全场景体验,从手机到手机与PC的连接、手机与车的连接、手机与跑步机的连接等等。例如,在最近上海车展上,华为车联网战略中的HiCar就是如此。所以,方舟编译器、EROFS超级文件系统等颠覆性的技术创新,只是华为在软件领域不断突破和努力的缩影。华为正在凭借自己的技术实力和不断努力,重造安卓系统的体验。除了硬件的技术突破,软件也在用户体验中扮演越来越重要的角色。这就是软件的力量,通过持续的技术进步,持续的生态开放,让消费者感受到,华为的产品体验在进步,安卓系统的体验在进步。????

上一篇:小欢喜说说 读博士或者拿到博士学位以后经历和感受是怎样的
下一篇:小欢喜搜视 番茄工作法为什么会这么火
  • sy_logo