华为Android黑科技,干翻iOS!

华为Android黑科技,干翻iOS!

(codeegg) 597 

2019年4月11日,华为在上海开了P30的国内发布会,其实手机发布会还是老样子,但是发布会上被随口一提的“方舟编译器”却引起了技术界不小的关注。

什么是方舟编译器

“方舟编译器”号称安卓性能革命,架构级优化,显著提升性能,第三方应用性能可以提升多达60%。

根据华为的介绍,现有的安卓系统是“边解释边执行”,存在效率低下的问题,而华为方舟编译器全程执行机器码高效运行程序,带来了架构级优化,显著提升性能。

至于性能如何提升,华为给出的数据称基于方舟编译器,系统操作流畅度提升了24%,系统响应速度提升44%,第三方操作流畅度提升了60%。

华为Android黑科技,干翻iOS!

单从文字和图片大家可能没有直观的感觉,下面这个视频应该能让你看完直呼“牛x啊!Android应用流畅度都能跟iOS对干了!”

华为P30Pro 对比苹果XsMax

华为P30Pro 对比三星S10+

Android编译器原理

看到这里大家肯定都很好奇华为的“方舟编译器”是怎么做到大幅度提升Android应用的性能呢?

在解释这个之前,我觉我们有必要先了解一下Android的编译运行原理:

Android 平台的绝大多数应用是使用 Java 语言写的,CPU 只能理解汇编指令,无法直接识别 Java 语言的虚拟机指令;为了让 CPU 能运行 Java 语言编写的程序,一般有两种办法:

「计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决」 引入一个中间层,这个中间层负责 Java代码的执行,然后这个中间层本身编译为 CPU 能理解的汇编指令,也就是 CPU -> 中间层 -> Java 代码。如果这个中间层采用 Java 语言直接作为输入,理解一句 Java 语句就把Java语言翻译一下让CPU 执行一段,我们一般称这种模式为「解释执行」。毋庸置疑这种方式效率是相当低效的。

直接把 Java 语言翻译成 CPU 能理解的机器语言。这里又有两种方式:

在程序运行之前直接把 Java 代码编译为机器语言。这种模式我们称之为 AOT (Ahead of time)编译。

华为Android黑科技,干翻iOS!

在程序运行起来之后,实时地把 Java 语言编译为机器语言然后执行。这种模式称之为 JIT(Just in time) 编译。

华为Android黑科技,干翻iOS!

通过这两种模式的字面意思我们就能知道,AOT效率肯定比JIT效率要高的多,因为他提前编译成了机器语言。

接下来我们看Android的编译模式:

其实在Android5.0之前,Android系统采用的就是JIT的编译模式,所以5.0之前的应用运行速度跟iOS根本没法比。

Android5.0 ~ Android6.0,Google为了对标iOS,采用了AOT的编译模式,但是这样应用的运行效率虽然有了显著的提升,但是也带来了新的问题:

1、安装速度巨慢。(因为在安装的同时需要编译所有代码为机器码)

2、占用空间太大。(编译后的机器码会占用大量空间)

为了解决这个问题,Google在近期的Android版本中引入了 JIT + AOT模式,这个模式主要做了以下三件事:

华为Android黑科技,干翻iOS!

1、应用安装的时候不执行 AOT 编译,安装速度飞快。初次使用应用的时候没有机器码,因此只能解释执行。

2、应用运行起来之后,系统收集经常被运行的代码的信息,做两件事:1)在必要的时候在运行时直接把 Java 代码编译为机器码 (JIT),然后使用机器码执行提高运行效率。2)把这个「经常被运行的代码信息保存起来」

3、设备空闲的时候,系统拿出应用运行时候保存的「热点代码信息」直接把这些代码编译为机器码 (AOT)

华为Android黑科技,干翻iOS!

方舟编译器怎么做的?

了解完Android编译原理,我们是不也很好奇方舟编译器是如何做的?

这里我们可以预见,App安装的时候通过AOT编译成机器码,这种华为肯定不会去做,因为已经被Google否定了。但是提升效率避不开AOT模式。

那我们大胆预测一下,方舟编译器是不是在Android 应用打包成APK的时候,直接把 Java 代码编译为了机器码?也就是我们之前我们的代码是打包成java代码,现在直接打包成了机器码,注意这个跟Android系统的那个 AOT 是不样的,系统是在应用安装或者系统空闲的时候做编译;这种方式你下载到的安装包就是编译好的了,不需要系统动手。

至于是不是这种方式,我们静等华为方舟编译器的开源。

近期文章:

今日问题:

你怎么看华为的方舟编译器?

华为Android黑科技,干翻iOS!

在码个蛋(codeegg)后台回复「社群」即可加入学习群

华为Android黑科技,干翻iOS!