博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
华为不做黑寡妇,开源编译器,与友商共建安卓性能
阅读量:1982 次
发布时间:2019-04-27

本文共 969 字,大约阅读时间需要 3 分钟。

640?wx_fmt=jpeg

今天我的一个老哥开了头条号,第一次发文章,我觉得不错,拿来用用,给大家看看华为技术总工的文采。这位总工潜伏在我的微信群里很少说话,大家一定要有这个想法,就是最低调的那个人,真的非常牛逼。

2 正文

“黑寡妇”是一种具有强烈神经毒素的蜘蛛,其名字源于交配后的雄蛛会被雌蛛吃掉。是华为任老板提出,希望华为改变现状,开放共赢,给合作伙伴让渡利益。

640?wx_fmt=jpeg

P30pro

华为在11日的P30国行发布会上,宣布了安卓应用的方舟编译器,并且面对业界开源,这无疑是安卓手机行业的一颗重磅炸弹。众所周知,安卓应用基于java开发,而java开发的安卓应用存在边解释边执行的天然缺陷,影响了安卓应用执行效率的提升。

640?wx_fmt=jpeg

方舟编译器

什么是边解释边执行,通过一个通俗的例子讲解下,你可以理解为中美两国领导人在交谈,两国领导只会讲中文和英文,那就需要翻译人员将中英文互译,安卓应用比作中方领导只会中文,手机CPU比作美方领导只懂英语,那手机CPU要执行安卓应用就需要一个翻译将安卓应用翻译为手机CPU理解的语言才能执行。

具体到实际的环境中,安卓应用是高级语言编码的,如果要比较a和b的值,只需要if(a == b)一句程序,容易编写,对人是友好的,但是手机CPU是ARM内核,只能识别ARM指令,如果要比较a和b的值,首先要将a,b两个值装载到寄存器,然后再用比较指令比较,手机CPU看到的语句是mov reg1,a ;mov reg2,b; cmp reg1,reg2;总共3条指令。这两种语言之间的翻译和转换必然会消耗手机性能。如果事先就将安卓应用翻译为ARM指令,这样就略去了翻译过程,可以直接执行,自然就能提升应用的流畅程度,也降低手机CPU的开销,进一步降低功耗提升手机续航。

640?wx_fmt=jpeg

高级语言

640?wx_fmt=jpeg

机器指令

3

当然安卓经过了9个大版本的迭代,安卓虚拟机已经针对边解释和边执行的低效率做了部分执行前转机器码的优化,但还是无法与直接编译为机器码的应用效率媲美。华为开源的方舟编译器应该是更进一步优化翻译这一步,减少解释在应用执行中的时间占比来提升流畅程度。

方舟作为编译器层面优化,非常便于友商集成,可以说华为是站在整个安卓业界的高度,将自身投入数千亿研发的部分成果共享,将利益让渡给业界,作为民营企业,不论其最终的意图如何,只是这份魄力就值得称赞。

完,各位共勉~

640?wx_fmt=gif

640?wx_fmt=jpeg

转载地址:http://vxrpf.baihongyu.com/

你可能感兴趣的文章
Android使用Retrofit_01_OAuth2 + GitHub
查看>>
Django oauth toolkit + Android + Retrofit 实现 OAuth2 的 access token 获取
查看>>
Android + Django + OAuth2 + Stub Authenticator
查看>>
Django + REST学习笔记
查看>>
Android Sync Adapter (使用Stub Content Provider) 笔记
查看>>
诡异的 Scroll view may have only one direct child placed within it 错误
查看>>
【转载】将Ubuntu16.04 中gedit在仅显示一个文件时显示文件名tab
查看>>
fstream 对象多次使用时注意clear
查看>>
调试 LenaCV 3D Camera (Linux)
查看>>
OpenCV杂记 - Mat in C++
查看>>
lnmp部署
查看>>
location区段
查看>>
nginx访问控制、基于用户认证、https配置
查看>>
用zabbix监控nginx
查看>>
SaltStack
查看>>
Jenkins 控制台输出中的奇怪字符
查看>>
Linux添加系统调用
查看>>
linux内存的寻址方式
查看>>
ubunut16.04的pip3出现问题,重新安装pip3
查看>>
how2heap-double free
查看>>