方舟编译器,华为的暗渡陈仓

栏目: 服务器 · 编程工具 · 发布时间: 2个月前

来源: www.donews.com

本文转载自:http://www.donews.com/article/detail/4660/15102.html,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有。

最近几天,华为的Mate20,V20等产品先后更新了方舟编译器,按照华为的说法,方舟编译器可让系统操作流畅度提升24%,系统响应速度提升44%,第三方应用重新编译后流畅度可提升60%。而且华为从多个方面优化了系统。

去年,华为的GPU turbo技惊四座,如今又搞出方舟编译器,华为意欲何为呢?

一、 安卓为什么慢?

关于安卓慢的问题,从2008年安卓一问世就有人提了。安卓是在 Linux 系统上的一个 Java 虚拟机。代码是Java写得,这让安卓早期具有非常好的兼容性。所以后来能有X86安卓。

同时,用Java语言编程,非常有利于开发者迁移到安卓平台,因为在安卓之前,很多功能手机都是支持Java的,手机程序的开发者都用Java,这是谷歌为了普及安卓做的选择。

但是,兼容和普及是有代价的,这就是速度。

安卓早期版本用的是解释执行加上编译执行,编译用的JIT(Just in time)模式,这个效率是巨慢的,所以安卓早期效率很低。

Android 5.0后正式采用 ART (Android Runtime)来解决之前的Java 代码执行效率问题。系统会把所有Java代码提前编译为机器码,提升执行效率。但是,这种模式安装速度慢、占用磁盘空间大。

Android 7.0后,Google做了很大的改进,安装的时候,还是解释执行,编译用的JIT(Just in time)模式。这样安装速度快,而你使用以后知道你常用什么了,再利用空闲的时候预先编译。

Android 8.0,谷歌改进了解释器,解释模式执行效率大幅提升。

Android 10.0上提供了预先放置热点代码的方式,应用在安装的时候就能知道常用代码会被提前编译。

就是说,现在谷歌的安卓已经经过很多次改进,在安装速度、执行速度上有了很好的平衡。

安卓虽然还慢,但是相比以前已经有了巨大的进步。

二、方舟编译器要做什么?

华为发现,现在95%的程序,为了效率,都是C++和Java混合开发的。

然后Java代码在通过安卓的虚拟机变成机器码,而C++的代码直接变成机器码。

于是,华为推出方舟编译器,不管你用什么语言,Java也好,C++也好,直接用我的编译器编译成机器码。

更可怕的是,华为搞了自己一套Runtime,用方舟编译了以后,直接连过去。这样华为脱离安卓的限制,做很高程度的优化。

用户如果还在安卓限制中,全部执行机器码,优化程度也离不开安卓。而华为做底层,同样给安卓开发的程序,经过华为方舟编译器的编译,连接到华为底层的Runtime,就可以优化到非常快。

所以,华为说系统操作流畅度提升24%,系统响应速度提升44%,第三方应用重新编译后流畅度可提升60%。

三、 暗渡陈仓

从明面上看,华为搞这个方舟编译器,是为了优化华为手机的速度,大家都用ARM公版,华为怎么能更快一点呢?搞底层的Runtime和编译器,一样给安卓开发的程序,用我的编译器,连接我的Runtime,打包成机器码下载,速度就快了。

但是,这意味着安卓的分裂,经过华为方舟编译器编译出来的机器码,其他手机不能用!

就是说,一个公司开发一套安卓APP,让所有手机都能用是一个编译,用华为的方舟编译器便于出来,就只能华为用,而且速度比通用编译的更快。

这就很可怕了,如果有一天,华为和谷歌闹翻,不用安卓了,只要华为这个编译器在,用户给谷歌开发的程序,一编译,就可以给华为的手机用。那华为就不需要谷歌了,安卓的生态系统直接拿来用就行了,而且速度比谷歌的更快。

这才是华为搞编译器的终极目的,明修栈道,暗渡陈仓。

特别声明:本文为DoNews签约作者原创,文章版权归原作者及原出处所有。转载请联系DoNews专栏获取授权。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

为你推荐:

相关软件推荐:

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编译器设计

编译器设计

Keith Cooper、Linda Torczon / 郭旭 / 人民邮电出版社 / 2012-12 / 99.00元

深入剖析现代编译器运用的算法和技术 强调代码优化和代码生成 体现编译原理教学的最新理念 本书旨在介绍编译器构造法中的艺术和科学。书中深入分析现代编译器后端所用的算法和技术,重点讨论代码优化和代码生成,详细介绍了用几个编程语言编写的示例等。 Keith D. Cooper 莱斯大学计算机科学系计算工程专业Doerr特聘教授,曾任该系系主任。Cooper博士的研究课题涵盖过程间......一起来看看 《编译器设计》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具