互联网

邮箱:admin@yaboyule291.icu
电话:0350-31360304
传真:
手机:17310970827
地址:广东省汕尾市东阿县预均大楼68号
当前位置:主页 > 互联网 >

互联网

yabo官方网站_解读|华为方舟编译器是如何实现Android性能革命的?

作者:网页版 时间:2021-01-01 00:03
本文摘要:2019年4月11日,在上海举行的华为新产品发布会上,除了能在月球上拍电影的华为P30系列,余承东还特意抛出了两款软件级别的“大片”,分别是方舟编译器和EROFS超级文件系统;其中华为方舟编译器可以构建“架构级优化,性能显著提升”,可以解决Android程序边解释边继续执行的问题,因而被余承东称为“Android性能革命”。发布会后,华为方舟编译器引起外界热议。 那么,什么是方舟编译器呢?它的“革命性”体现在哪里?

yabo官方网站

2019年4月11日,在上海举行的华为新产品发布会上,除了能在月球上拍电影的华为P30系列,余承东还特意抛出了两款软件级别的“大片”,分别是方舟编译器和EROFS超级文件系统;其中华为方舟编译器可以构建“架构级优化,性能显著提升”,可以解决Android程序边解释边继续执行的问题,因而被余承东称为“Android性能革命”。发布会后,华为方舟编译器引起外界热议。

那么,什么是方舟编译器呢?它的“革命性”体现在哪里?面对这些问题,华为两周后再次举办媒体沙龙,对方舟编译器有了更详细的了解。Android生态系统中编译器的工作原理在了解方舟编译器之前,首先要了解编译器在Android操作系统中的运行机制。从virtual exposed/太极作者舒威处了解到,Android平台绝大多数应用都是用Java语言编写的,CPU无法解释和编译指令,无法识别Java语言的虚拟机指令;为了让CPU运行用Java语言编写的程序,一般有两种方式:引入一个中间层,负责管理Java代码的继续执行,然后这个中间层的编译器编译可以被CPU解释的指令,即CPU-中间层-Java代码。

如果这个中间层使用Java语言作为它的输出,如果你解释一个Java语句,你就翻译Java语言,让CPU继续执行一段时间。我们一般称这种模式为“解释并继续执行”。

毫无疑问,这种方法的效率很老了。需要把Java语言翻译成CPU可以解释的机器语言。这里有两种方式:第一,需要在程序运行前将Java代码编译成机器语言。

这种模式被称为AOT(超前)编译器。其次,程序一起运行后,动态地将Java语言编译成机器语言,然后继续执行。这种模式叫做JIT(准时制)编译器。显然在Android平台上,代码编译器经历了几个阶段。

在5.0年5月Android使用ART之前,Android继续以解释JIT执行的方式执行Java代码。现阶段是“边解释边继续执行”的真实模式,代码效率很低。另外,当时的GC(垃圾复用)表现出了一定的大胆,Android也没什么用。

在Android 5.0到Android 6.0中,Google发布了ART(Android Runtime)来解决问题之前的Java代码执行效率问题。这个阶段几乎使用AOT模式;安装Android时,系统不会提前将所有Java代码编译成机器码。这种模式有两个缺点:安装速度极慢。

甚至高通骁龙855也使用AOT模式编译器为更大的应用程序(如支付宝)安装软件包,这可能需要一分钟。当时的CPU还没有现在好,加一个也花了很长时间。更有甚者,系统OTA将适用于所有继续执行AOT的运营商,此时启动速度可能需要很长时间。空闲磁盘空间,Java代码编译器是机器码后卷不会急剧收缩。

到了Android 7.0,Google有了相当大的提升;这种改进是基于这样一个事实,当我们把它应用到一个应用程序中时,基本上每个人都只使用它的一小部分功能,那么为什么所有的代码都应该只有编译器呢?所以只有编译器用户经常使用的那部分代码是可以的,所以安装速度比较慢。用户启动时,系统可以分辨出代码的哪个部分经常继续执行,而这部分代码的编译器是机器码,运算速度也慢。于是Google又推出了JIT,此时继续执行的模式是AOT JIT指令继续执行。明确一点:应用到安装上,AOT编译器不会继续执行,安装速度会很快。

第一次应用的时候没有机器码,不能说是继续执行。应用于操作后,系统收集了频繁操作代码的信息,实现了两件事:1)在适当的时候操作,需要把Java代码编译成机器码(JIT),然后用它继续执行机器码,提高操作效率。

2)保存这个“经常操作的代码信息”。当设备空闲时,系统需要将这些代码编译成机器代码(AOT),当它带走运行期间保留的“热代码信息”时。解释器在Android 8.0上做了改进,说明模式执行效率有了很大提高;Android 10.0获得预放置热代码的方式,可以告诉普通代码安装时不要提前编译。可以看出,Android平台目前的持续执行模式已经在空间闲置安装速度和运行速度上超过了一个很好的平衡。

综上所述,目前的Android使用的是综合模式,说明JIT AOT还是可以执行的;但它并没有脱离这样一个前提,即当Java代码被打包为APK时,它仍然被使用。换句话说,在APK变得适用于用户的过程中,它也经历了一个安卓系统内部的编译过程,这是一个不可避免的努力。按照华为在媒体沙龙的理解,这个在现有安卓系统中无法绕过的坚果叫做虚拟机(Virtual Machine,VM),其中包括翻译器和编译器。

其目的是将Java高级语言转换成机器无法理解的语言——。这个切换过程会造成停滞,VM的统一重用内存垃圾不会带来停滞。

华为方舟编译器改变了什么?首先,方舟编译器是根据华为EMUI 9.1操作系统创建的编译工具。根据华为的不同意见,虽然方舟编译器是在2019年4月11日公布的,但华为早在5年前就开始布局自己的编译器了。2013年,它发布了自己开发的编译器HCC。

2014年,伟大的程序员弗雷德周(Fred Chow)重新加入,担任华为编译技术公司首席科学家。2016年,华为正式成立编译器和编程语言实验室,并投入数百个专家团队多次尝试,才在EMUI 9.1上构建机器码翻译,根据上述Android操作系统的代码运行逻辑,华为编译器的优势仅次于跨VM。

简单来说,有了百人专家团队的创建,华为方舟编译器可以把Java变成机器码,而且需要通过Android操作系统内置的VM编译器。根据华为的不同意见:方舟编译器的应用已经在开发阶段完成;也就是说,只要是编译器应用的,应用到市场之后,用户的iTunes APK就是编译器传递的。换句话说,通过方舟编译器,开发者的应用早在iTunes之前就已经转化成了机器可读的代码,可以在手机上慢慢安装、启动和操作。

在通过VM的编译器——上,方舟编译器将编译过程推进到开发阶段,大大增加了智能手机和操作系统的运行费用。根据华为的不同意见,使用华为编译器后,改进效果如下:EMUI 9.1意味着系统组件System Server应用到Ark编译器后,系统简洁速度提高24%,系统响应速度提高44%;第三方应用(目前使用的是km/h版新浪微博)的运营商简洁性提升了60%。不可忽视的是,本质上,要想打造华为所说的效果,首先要利用第三方应用开发者使用方舟编译器提前重建自己的应用,然后需要从——店移除华为的应用,这也是俞承东在4月11日的发布会上力促开发者积极参与的原因。

除了代码编译器,方舟编译器还获得了更高效的内存机制。它与Android内存复用的区别在于,内存管理是程序开发和运行中必须考虑的关键部分,也与系统简洁度密切相关。Android对内存复用的使用侧重于复用机制,在听全局复用的时候更需要停止使用,这是随机干扰的根本原因之一。

方舟编译器获得了更高效的内存重用机制,需要随时停止和重用,大大提高了运算速度。另外,在Ark编译器的编译环境下,代码也可以进行优化。目前由于Android ART的AoT和JIT动态编译器都是在手机上运行的,不受资源限制,所以不能用于非常简单的优化算法。

方舟编译器可以用于灵活性和不同的编译器优化方案,因为它是在开发阶段开发的。而且由于编译器在开发环境中可以被手机的性能所容忍,所以可以用于更高级的设备的优化算法,使每个应用的性能达到最佳。2019年,全面开源。但在4月11日的发布会上,华为已经做出回应,方舟编译器也将向第三方合作伙伴开放,希望共同打造开发者生态的“方舟朋友圈”。

目前,华为已经宣布,从2019年开始,方舟编译器不会完全开源;其中,华为将在2019年8月的华为终端开发者大会上宣布方舟编译器框架代码开源,不会在2019年11月的国家自然科学基金开发者大会上构建原方舟编译器代码开源。对于华为方舟编译器的开源,会有所关注。(微信官方账号:)记录:本文部分内容的编写很清楚平台作者舒威询问的内容,已经获得作者许可。允许禁止发表的原创文章。

以下是发布通知。


本文关键词:yabo,官方网站,解读,华为,方舟,编译器,是,如何,yabo官方网站

本文来源:yabo官方网站-www.yaboyule291.icu