内容简介:最近几天,华为的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专栏获取授权。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- LLVM接受NVIDIA的“f18” Fortran编译器作为官方Fortran编译器
- 编译原理实战入门:用 JavaScript 写一个简单的四则运算编译器(四)结语
- Scala.js 0.6.29 发布,将 Scala 编译成 js 的编译器
- Go 编译器介绍
- Go 编译器介绍
- C++编译器优化
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。