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

栏目: 服务器 · 编程工具 · 发布时间: 5年前

内容简介:最近几天,华为的Mate20,V20等产品先后更新了方舟编译器,按照华为的说法,方舟编译器可让系统操作流畅度提升24%,系统响应速度提升44%,第三方应用重新编译后流畅度可提升60%。而且华为从多个方面优化了系统。去年,华为的GPU turbo技惊四座,如今又搞出方舟编译器,华为意欲何为呢?关于安卓慢的问题,从2008年安卓一问世就有人提了。安卓是在Linux系统上的一个Java虚拟机。代码是Java写得,这让安卓早期具有非常好的兼容性。所以后来能有X86安卓。

最近几天,华为的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专栏获取授权。


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

查看所有标签

猜你喜欢:

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

深入Linux内核架构

深入Linux内核架构

Wolfgang Mauerer / 郭旭 / 人民邮电出版社 / 201005 / 149.00元

众所周知,Linux操作系统的源代码复杂、文档少,对程序员的要求高,要想看懂这些代码并不是一件容易事。本书结合内核版本2.6.24源代码中最关键的部分,深入讨论Linux内核的概念、结构和实现。具体包括进程管理和调度、虚拟内存、进程间通信、设备驱动程序、虚拟文件系统、网络、时间管理、数据同步等方面的内容。本书引导你阅读内核源代码,熟悉Linux所有的内在工作机理,充分展现Linux系统的魅力。 ......一起来看看 《深入Linux内核架构》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具