干货深入了解革命性的“方舟编译器”,让你从华为产品看到未来

干货深入了解革命性的“方舟编译器”,让你从华为产品看到未来

方舟编译器发布

昨天的上海发布会上,除非引人耳目的P30系列以外,华为宣布的一项新技术可能更重要——方舟编译器,号称安卓性能革命。

干货深入了解革命性的“方舟编译器”,让你从华为产品看到未来

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

第二、提高安卓应用的效率。安卓应用目前是“边解释边执行”,效率低。而华为方舟编译器全程执行机器码高效运行程序,带来了架构级优化,显著提升性能。可以说这是一个飞跃,体验会得到极大的提升。

干货深入了解革命性的“方舟编译器”,让你从华为产品看到未来

余承东同时宣布,方舟编译器将面向业界开源,希望App开发厂商可以尽快使用这一编译器。


Android平台的编译

干货深入了解革命性的“方舟编译器”,让你从华为产品看到未来

1. Android虚拟机有两种:Dalvik和ART。

2. Java体系中的三种编译方式:前端编译、即时编译(JIT编译)、静态提前编译(AOT编译)。

3. Dalvik使用JIT编译,ART 使用AOT编译。

干货深入了解革命性的“方舟编译器”,让你从华为产品看到未来


Android2.2-Android4.4,使用JIT(Just in time compilation)编译,中文称之为即时编译,程序运行之后,实时把JAVA语言编译为机器语言然后执行。

这种边解释边执行的编译方式,非常辣鸡,导致安卓系统运行起来非常低效率。

干货深入了解革命性的“方舟编译器”,让你从华为产品看到未来


Android4.4-Android6.0,使用AOT(Ahead-of-time)编译,Android 应用在安装的时候,系统会把所有Java代码提前编译为机器码。

这种模式有两个缺点不能忍:

1.AOT的缺点是安装速度巨慢,即便是现在顶级的骁龙855处理器,安装一个几十MB的软件,更要命的时候,应用安装和系统升级之后的应用优化比较耗时(重新编译,把程序代码转换成机器语言)

2.占用磁盘空间,Java 代码编译为机器码,优化后的文件会占用额外的存储空间(缓存转换结果

干货深入了解革命性的“方舟编译器”,让你从华为产品看到未来


Android 7.0-现在,JIT 编译器被再次使用,采用AOT/JIT 混合编译的策略,执行模式是 AOT + JIT + 解释执行。

有以下几个特点:

1.应用在安装的时候,不会再被编译,安装速度非常快。

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

3.手机进入 空闲 或者 充电 状态的时候,系统会扫描 App 目录下的 「经常被运行的代码信息」profile 文件并执行 AOT 过程进行编译。

干货深入了解革命性的“方舟编译器”,让你从华为产品看到未来


华为方舟编译器和华为的生态圈决心

华为推出的方舟编译器就是为解决Anrorid系统编译复杂且占据系统硬件大量资源行业难题而诞生。遗憾的是,余承东并未在发布会上透露更多的技术细节。因此,只能大胆做一下技术猜测。

干货深入了解革命性的“方舟编译器”,让你从华为产品看到未来

技术原理猜测:

方舟编译器简单的来说就是采用静态编译的方式,之前安卓应用上使用动态编译方式并不能直接在开发时就将应用的复杂代码转化完成,还有部分代码需要我们的手机进行协同转化,这就很大程度上降低了手机上应用开启效率。

简单的来打比方来说,你以前去请菲佣干活,还得请个英语翻译,现在有了方舟,跳过翻译,直接指挥菲佣。

方舟编译器采用的是静态编译方式,与iOS一样,苹果的APP也是采用静态编译(LLVM编译器,将应用程序(Swift语言编写)提前编译成机器码,直接运行在芯片上)。也就是说方舟编译器在APP开发环节就将JAVA语言编译成了CPU运行所需要的机器语言,不再需要虚拟机去编译,极大提高了运行效率。虽然达不到ios的流畅度(毕竟ios系统封闭,且规则统一),但在不久的未来,相信也可以媲美ios的用户体验度。

华为方舟编译器背后的意义:

我们回头看看,华为每年持续投入如此之高昂、如此核心的技术成果华为为何会对外开源呢?其实这次华为亮相编译器,简直就是透露出自家的系统搞好了,准备开始搞自己的生态圈。

华为发布的不是仅仅是单纯的工具,通过革命性的系统优化,不仅让自己终端产品操作系统更为流畅、效率更高,还借此吸引众多应用软件厂家使用自己的“方舟编译器”,打造自己的圈子。

试想以后如果华为用自己的系统了。那么依赖方舟编译器现有的技术特点。现有的所有安卓软件不需要根据程序员再根据华为新系统重新开发,也无需学习新的程序语言。只需要把以前开发好的软件通过华为新系统的方舟编译器再编译一次,就可以无缝从安卓移植到华为新系统上,而且避免了安卓框架的授权,不再受制于人。

华为近段时间的产品,越来越让我感觉到看见了华为多年来的厚积薄发,完善的生态链愈发让人看到未来的惊喜。


分享到:


相關文章: