1
今天我的一个老哥开了头条号,第一次发文章,我觉得不错,拿来用用,给大家看看华为技术总工的文采。这位总工潜伏在我的微信群里很少说话,大家一定要有这个想法,就是最低调的那个人,真的非常牛逼。
2 正文
“黑寡妇”是一种具有强烈神经毒素的蜘蛛,其名字源于交配后的雄蛛会被雌蛛吃掉。是华为任老板提出,希望华为改变现状,开放共赢,给合作伙伴让渡利益。
华为在11日的P30国行发布会上,宣布了安卓应用的方舟编译器,并且面对业界开源,这无疑是安卓手机行业的一颗重磅炸弹。众所周知,安卓应用基于java开发,而java开发的安卓应用存在边解释边执行的天然缺陷,影响了安卓应用执行效率的提升。
什么是边解释边执行,通过一个通俗的例子讲解下,你可以理解为中美两国领导人在交谈,两国领导只会讲中文和英文,那就需要翻译人员将中英文互译,安卓应用比作中方领导只会中文,手机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的开销,进一步降低功耗提升手机续航。
3
当然安卓经过了9个大版本的迭代,安卓虚拟机已经针对边解释和边执行的低效率做了部分执行前转机器码的优化,但还是无法与直接编译为机器码的应用效率媲美。华为开源的方舟编译器应该是更进一步优化翻译这一步,减少解释在应用执行中的时间占比来提升流畅程度。
方舟作为编译器层面优化,非常便于友商集成,可以说华为是站在整个安卓业界的高度,将自身投入数千亿研发的部分成果共享,将利益让渡给业界,作为民营企业,不论其最终的意图如何,只是这份魄力就值得称赞。
完,各位共勉~