yabo88wap下载亚博体育网>手机>评论>正文
华为方舟编译器深度解读 颠覆安卓体验就靠它
2019-08-07 17:09:10 【yabo88wap下载亚博体育网】 作者:yabo88wap下载亚博体育网 责编:yabo88wap下载亚博体育网
0
yabo88wap下载亚博体育网

【yabo88wap下载亚博体育评论】“逆水行舟”这个词表示逆着水流行船,用来比喻不努力就要后退。其实说实话,从笔者个人对安卓系统认知和大环境来看,华为的方舟编译器,既是一套适合国人使用的编译器,又是未来安卓系的一大发展趋势。方舟编译器,从笔者对其了解来看,其实有几点是最为重要:


timg.jpeg


在系统方面


1、干掉了复杂的Java虚拟机。

2、干掉了混合语言互相调用带来的JNI开销。

3、不用改变编程习惯,即可使用方舟编译器进行优化。

4、引用计数法,对系统内存进行随时用随时回收,消除卡顿。


对使用体验:


1、通过华为方舟编译器,替换Android system-server服务,让手机运行得到本质提升,这包括手机APP打开速度和流畅度。

2、兼容市面上主流安卓应用。


想干掉复杂的Java虚拟机 华为拥有神秘“黑科技”


在讲华为这项“黑科技”之前,有必要为大家讲解什么叫“虚拟机”。早在安卓系统诞生起,就用java语言进行编写,但是在运行过程中,需要借助虚拟机机制来编译源代码,在Android 1.0时代,这个虚拟机叫Dalvik,到Android 2.2,引入了JIT编译器,虽然可以让用户在启动APP时候,将经常使用的功能直接编译为机器语言,但是仍旧需要每次都重新编译,大大增加手机的处理负担。


ChMlWl1C26uIanLVAAEfXYqN6csAAMSrwB188MAAR91514.jpg

图片来自网络


Android 5.0时代,Dalvik虚拟机升级到了ART,JIT编译器也“升级”到了AOT,即用户在下载APP到手机安装时候,就直接可以把编译的代码直接编译成机器语言,当然还有部分没有编译的代码,这个就在用户启动APP时候再使用解释器来编译。虽然比1.0运行效率要高,但是牺牲了安装时间。


到Android 7.0时代,为了解决安装时间过长问题,采用了混合编译机制,即在安装APP时候不编译中间代码,而是等APP空闲下来时,先通过AOT静态编译出一部分机器代码。如果AOT环境下遇到问题,再激发JIT编译器+解释器进行“辅助”。


ChMlWl1DpVeIbL1fAABL8_rRDbIAAMTmwBcb1cAAEwL184.jpg

图片来自网络


但是上述的代价,就是需要大量运行内存和不断的高存储写入,进而增加功耗和发热。而华为干掉虚拟机,其实就是将Java代码直接编译成010101的机器码。但是大家要明白,Java语言里有静态语义和动态语义,大多数的动态语义,java无法做到直接编译还得交给虚拟机。


方舟编译器则解决了静态编译动态语义的两点最大难题,设计数据模型和运行时候的高效获取动态信息问题,前者大规模研究了java动态语句,进行数据建模,在面对后者问题时,华为单独设计了一套具有核心专利的动态语义匹配机制。


这样在克服这两点困难后,就不再需要虚拟机了,笔者认为,其实安卓系统卡顿的一切缘由,都是虚拟机在作祟。此外,笔者也大胆猜测,方舟编译器或许就在为鸿蒙系统做准备。


干掉混合语言互相调用带来的JNI开销


这点其实同样和java语言有关系,目前大部分常用的软件都是Java和C/C++等语言混合编写而成,为了能够让APP可以正常运行,就需要互通有无,这样一个“通用”接口就出现了——JNI,手机在调动APP时候,需要分配一部分资源给到JNI做调度,这样会大幅度占据硬件资源,而方舟编译器其实统一了各种语言,实现统一中间IR,为此,华为对IR已经进行了超过五年的研究,并研发了一套专利,这样使用不同代码,可以在相应开发环境中,统一成一套可以直接执行的机器代码。


ChMlWl1DqoKICvfvAAESbSPcHgAAAMTqgA31AYAARKF125.jpg

图片来自网络


当然还有一点,笔者就直接放在这个小专题中讲,即代码优化,开发者可以自行代码优化,也可以通过方舟编译器预置的算法进行代码优化。这样在编程进行代码优化时候,就在方舟编译器这个环境中即可,从源代码到后端的机器码,均可以非常方便的编译。


而笔者发现,华为另一大计划,是想通过代码云端化,让所有开发者参与进来,共同对代码进行优化,进而让最后的编译效率得到提升。


结束安卓虚拟机GC内存回收问题


我们知道,安卓手机早期运行内存并不高,当手机内存资源不能满足不断增加的新请求时候,安卓系统内,就会调用虚拟机的GC(Garbage Collection)机制,换句话讲,如果激发出GC,就会让手机运行的Java线程全部暂停,并等待回收内存空间。此外,这个机制一旦被激发,外界几乎不能做任何更改和设置,用户无法把它删掉,这样最终会引起手机卡顿。


屏幕快照 2019-08-07 下午5.06.11.jpg

图片来自网络


其实针对这个问题,解决方法非常简单,只要增加运行内存即可,这也就解释了,为什么目前手机运行内存不断飙升,从一开始的256M RAM,到今天的12GB RAM。其实也可以从手机使用角度来分析:手机APP应用体积不断变大、内容越来越丰富、画面特效也达到了和PC端一样,势必会增加手机内部资源,加上安卓的GC机制,最后其实“顺理成章”的会造成卡顿。


华为解决安卓虚拟机GC回收机制问题,采用的是一项名为引用计数法的技术,这项技术可以对内存进行实时回收,此外,还配合消除环算法,来避免回收带来的卡顿。另外,为了抑制手机运行内存被环引用占据,方舟编译器还引入了annotation的“告警”标示,对基础类的环进行标注,笔者大胆推测,如果开发者增加标注,那最终将会减少系统卡顿。


写在最后:


从目前工信部数据来看,目前已经有20款5G手机等待上市,5G设备终端已经非常成熟,这将直接带动5G市场活力,另外随着运营商资费下降,新一轮的换机风潮,将会很快来临。而带动的视频类内容,也将会掀起一股潮流。这些比图文更加直观的内容,势必会增加手机硬件资源的占用,而系统体验,是最容易让消费者直接感受到的,如果想要从“根基”做出改变,就需要从系统入手。


而华为方舟编译器的出现,确实是华为生态系统中非常重要一环,就像“树根”一样,而移动终端和IOT等设备,就如同收获的果实。未来,就像余承东说的那样:“它详细解读了我们如何用十年努力,让方舟编译器和世界对话,让手机的使用体验更加流畅。接下来方舟编译器会全面开源,期待更多合作伙伴加入方舟阵营,一起为消费者带来全新的移动应用生态和体验!”


评论

yabo88wap下载亚博体育网登录页

请输入账号

请输入密码

验证码错误

忘记密码? 没有账号,立即注册

yabo88wap下载亚博体育网注册页

请输入账号

验证码错误

验证码错误

两次密码输入错误

您还未接受yabo88wap下载亚博体育网用户协议

已有账号,

yabo88wap下载亚博体育网找回密码

手机找回邮箱找回

请输入账号

验证码错误

验证码错误

请输入密码

两次密码输入错误

10.9.94.115