余承东称方舟编译器可以让华为手机性能超过苹果,你怎么看?

华为手机功能教程


余承东是一个很有趣的人,给人的印象是爱说大话。但至少到目前为止,余承东“吹过的牛”都实现了,也就是余承东的“说大话”,基本上都是立足在华为有能力实现的基础上。有华为强大的技术作为支撑,余承东才能将自己屡屡惊人的“大话”变成现实。

那么,余承东称方舟编译器可以让华为手机性能超过苹果,应该是基本可信的。即使没有超过,那也是不相上下,或者是非常接近。

苹果的iOS系统确实好用。但iOS系统也不可能永远都是最先进的。可能在智能机发展前期,苹果的iOS系统可以一招鲜吃遍天,但伴随技术进步,总有新的系统可以更加先进。目前来说,或者华为的方舟编译器可以做到,或者已经接近苹果的iOS系统。

因为方舟编译器,并不是一个简单的编译软件,而是与Android系统充分结合的一种底层技术,也就是可能进一步完善Android底层编码,这样华为的方舟编译器就更有意思了。

一个现代编译器的主要工作流程是:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)。

方舟编译器如果能够实现从源代码到可执行程序之间的转换,将其他中间过程省略,或者是浓缩,那么就能实现更快更好地编译,简单地说就是减少了中间环节,用我们常说的减少了中间商。

我们做一个简单粗暴的类比:以前一个产品流通到市场终端,需要经过复杂的经销体系,早期销售体系是全国经销→ 大区经销→ 省级经销→ 市级经销→ 县级经销商→ 终端网点→ 消费者。但电子商务直接省略了中间环节,厂家→ 商务平台→ 消费者,这就是网络产品价格更便宜的一个重要原因。

当然,这种类比肯定不准确,也不一定正确,但如果能够从源代码带可执行程序直接有更好的链接,那么就能够实现余承东所说的,提高24%的流畅度。

技术不断进步,一切皆有可能,华为超越苹果就是这个方舟编译器,也可能是下一个什么样的重大发明。当然,苹果也在进步,反正竞争总是带来更好的产品。


波士财经


一般的安卓程序就是java语言编写,靠虚拟机解释运行,所以效率很低。而方舟编译器实现的是将java等高级语言(可能混合了其它高级语言)直接翻译成二进制代码,让CPU直接读取执行。

对比不用编译器的app,去掉了虚拟机的读取到内存,解释并生成cPu的执行语言文件,由CPU执行后再释放临时文件的过程。这样效率就提高了很多,减少了步骤,也占用更少的内存(虚拟机要占用内存,虚拟机也要好费CPU的的资源)。

对比IOS看:,ios用的是objct C语言,它生成的App实际上都是可执行程序,而不是解释性的语言文件,所以执行效率高,运行速度快,占用内存少。

所以,安卓的经过app编译后,运行效率肯定会提高,加上本身安卓堆的硬件更多,运行起来比ios丝滑也不是不可能。


Migod


感谢您的阅读!

余承东说:方舟编译器可以让华为手机的性能超过苹果iOS!其他厂商可没有样的能力,只有我们华为有这样的能力。难道,方舟编译器让安卓系统超过了iOS系统吗?

在一段比较中,我们也确实看到了华为P30 pro和iPhone xs max之间的比较,我们发现同样的时间,华为P30 pro要比iPhone xs max快的多,而且在开启的15个App中,华为P30 pro有13个启动更快。

那么,方舟编译器真的这么厉害吗?我们可以看它的原理是什么?目前关于方舟编译器的原理都处于猜测阶段,而且还没有开源。不过,我们可以猜测如下:

我估计它可能和ART类似,不过ART是边解释并运行,而方舟编译器可能是在编译以后,直接,编译成机器码,减短了编译时间。所以,系统操作流畅度能提升24%,系统响应能够提升44%。

当然,目前的方舟编译器的只是在EMUI9.1中使用,提升了系统性能,我们还是比较好奇:到底是只能运用在华为手机上,还是能够运用在所有的安卓手机上?

不过,安卓系统的运行机制,和苹果运行机制不同,这就决定了,如果华为不能改变安卓运行机制,估计和ios还有距离。


LeoGo科技


日前上海发布会上,华为推出的方舟编译器可谓是意外的惊喜。根据华为的介绍,方舟编译器能够从程序编译与运行机制上提升安卓系统的流畅度,不仅引来科技粉关注,许多小白也很关心,这款编译器究竟能够给安卓带来什么变化。



毕竟,天下苦安卓卡顿久矣,从测试版到现在,已经进入Android 10.0版本,虽然流畅度一代一代有所提高,但是相比隔壁的iOS,安卓体验弱的不是一点半点。发布会上余承东表示方舟编译器可让操作系统流畅度提升24%,给安卓党带来许多期待。



就连谷歌一直都未能搞的太定的事,方舟编译器怎么样实现?想要了解其中具体的逻辑,我们先从什么编译器说起。

啥是编译器?

简单的理解,不管编程怎么变,最终编程得到的可执行二进制程序都是给CPU运行的。使用二进制直接编程非常不现实,因此计算机领域诞生了汇编语言(用一个符号来代替一串二进制),接着诞生C语言,C语言之上还有更高级语言,譬如:C++、Java、C#、bash等等。

简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。

其中,高级计算机语言便于人编写,阅读交流,维护;现在大多数程序员都不需要复杂的计算机知识,掌握一门或多门高级计算机语言就可以进行编程就是这个道理。机器语言是计算机能直接解读、运行的。编译器是将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。

简单的理解,编译器就是承上启下的中间层,连接着高级语言和机器语言,应用程序是否能够直接编译,决定了流畅度和稳定性,这就是Android 平台与iOS平台在体验上巨大差异的关键。

作为基于Linux的自由及开放源代码的操作系统,Android 平台的绝大多数应用是使用Java语言写的,由于Java语言独特的虚拟机机制(简称JVM),CPU不能直接理解汇编指令。早期Android运行程序过程中,每运行一行Java语言的虚拟机指令都需要即时编译为CPU识别的机器码,这就是安卓卡顿的根源;在安卓历代的版本,围绕这一问题提出很多解决方案(后面会详解),却都很难彻底解决。

反过来看,iOS从诞生之初就采用LLVM(Low Level Virtual Machine)编译器,LLVM是构架编译器(compiler)的框架系统,以C++编写而成,是一个模块化和可重复使用的编译器和工具技术的集合。应用程序(Swift语言编写)能够直接编译成机器码,无需像Android需要一个中间层过渡,程序可在手机CPU上直接运行。

你明白了JVM与LLVM的工作机制,就知道为何同样的手机内存,为何iOS的流畅度甩掉Android几条街。在用户的日常使用中,内存只有2G的iPhone,其流畅度往往远超4G、6G的Android手机。

安卓系统想要实现同iOS一样的高效,就要解决JVM,解决程序直接编译成机器码的痛点,方舟编译器最大的亮点,就是围绕这一问题进行优解(后面会详解)。

历代安卓的努力

我们都知道Android系统是以Linux系统为底层构建的,Android系统是开源(源代码公开),因此这涉及到对不同硬件配置设备的适配问题,而iOS的闭环特性则不存在这一问题。谷歌为了降低应用开发难度就在Linux底层之上,构筑了一个基于JIT的Dalvik编译器。



也就是说,在早期的安卓系统上每次运行应用时都需要虚拟机的一次编译,每次执行应用的时候虚拟机都会将程序的语言由高级语言编译为机器语言,这样设备才能够运行这一应用,相比iOS的机制,多个中间层使其执行效率大大下降。

后来受Oracle起诉侵权影响,以及谷歌对提效安卓系统的内在推动,开始着手开发Dalvik的替代品。

2014年谷歌在android 5.0版本中使用了ART来正式替换Davlik。相比于运行一行应用就要进行编码的Davlik,ART是一个AOT编译器,所谓AOT (Ahead of Time)是指在运行以前就把字节码静态编译成二进制机器码,摆脱了每次运行应用都要虚拟机即时编译的冗余过程,相比JIT 能够提高执行效率。



但是,问题依然存在,替换Davlik的ART编译器虽然实现了Java字节码的静态编译,受Java语言本身的限制,特别是类的动态加载相关的特性,仍然依赖JVM在运行时进行解释执行或编译执行的能力。

也就说,Android演变为包含了解释执行+JIT+AOT的混合模式,虽然流畅度有所提升,但相比iOS仍有不小的差距,卡顿问题依然存在。

除此之外,安卓的GC(Garbage Collection,垃圾回收机制)同样也为系统带来卡顿难题。当安卓系统上需要分配的内存空间不再使用的时候,Java虚拟机将调用GC来回收内存空间,而GC本身是个全局暂停事件,当GC进行时所有的应用线程都会停止,直到回收操作完成,这是安卓用户经常遭遇莫名卡顿的原因之一。



方舟编译器做了什么?

从公开的信息分析,华为的方舟编译器也基于AOT,不过方舟编译器采用的可能是创造性地静态编译了动态语义,就是把所有的字节码都被提前编译为二进制代码,也就是说完全消除虚拟机的影响,让JVM消失,程序完整的在手机CPU上直接运行,就能比肩iOS一样的高效。

此外,方舟编译器还通过编译优化算法,将代码编译出的机器指令最优化,以此来提升代码执行效率,当然这个是加分项,最关键的还是程序在手机CPU直接运行。



从上图的实现机制中我们能够看到,方舟编译器缩短安卓上应用运行的路径,在安卓生态上实现类似iOS的LLVM(Low Level Virtual Machine)编译器的机制,相比android ART编译器实现对流畅度的提升。

方舟采用了引用计数法(RC,Reference Counting)来进行内存的回收,来避免GC集中式的回收带来的系统卡顿。

这个算法就是给对象增加一个引用计数,每当对象被引用时,就将该对象的引用计数加一。所以当一个对象的引用计数为0的话,那么就可以认为这个对象是可以回收的。并采用消除环算法(消除对象互相引用带来的无法回收问题)来配合RC,以实现内存的实时回收。将集中式的处理,变为分布时间打扫,避免出现全局暂停事件。



市场上虽然很多厂商强调对安卓深度定制,但有能力,并且有魄力对安卓底层机制改动的企业并不多,尤其是像华为这样在编译器层面实现整体的优化。华为能够推出方舟编译器,一方面,得益于华为深厚的技术和人才积累,自EMUI 5.0以来便力图通过底层优化提升系统性能;另一方面,得益于华为一直聚焦用技术创新提升用户的使用体验,从F2FS文件系统、GPU Turbo到方舟编译器,层层深入对安卓系统的优化。


另外,华为已表示方舟编译器将面向业界全面开源,提供完整的编程框架和应用开发工具链,并开放给第三方伙伴构造开发者生态,意味着未来将有更多开发者可参与到方舟编译器的开发、使用,对于提升整个安卓生态的体验带来很大的可能性。

不过,最终安卓系统能否追赶上iOS,还有等待市场的进一步验证。笔者作为资深的安卓党,期待方舟为安卓带来流畅度的提升,当安卓用户不再去羡慕iOS的流畅,在中高端市场安卓手机们才能更好的同iPhone竞争。


牧离子


感谢阅读!

4月15日华为官方网站上宣布了EMUI 9.1 。华为宣布这是全新主题,以瞬间美学为设计灵感,从官方图片上看,确实绚丽。

EMUI 9.1除了升级了视觉体验,这次宣布的重磅消息是华为对EMUI 9.1进行了DNA级别的优化:方舟编译器!

01 安卓为什么总是卡顿?

安卓的卡顿先打个比方说:你跟外国人聊天讲汉语,总得经过一个翻译把汉语给你翻译成英语一样,能不卡顿?能不反应慢吗?


安卓系统的卡顿一直被网友们吐槽,也是大家放弃安卓选择iPhone的主要原因。



02 方舟编译器

接着前面的比喻,用方舟编译器就是:你把翻译辞掉,你自己吧啦吧啦的用外语跟外国人聊天!既省钱又快速!

同样的,方舟编译器省掉“中间层”,从底层改变安卓系统的编译方式,以高效的静态编译代替高资源消耗的动态编译。所以,省资源又运行快!



03 华为的野心

我认为华为在下一盘很大的棋:

  • 第一步,现在国内安卓手机都是采用安卓系统,为解决卡顿问题其他厂商会纷纷采用方舟编译器!
  • 第二步,手机APP厂商,手机硬件厂商开始适配方舟编译器。
  • 第三步,当各方适配了华为的方舟编译器,华为自己研发的麒麟OS就会粉墨登场!从上层都底层形成了手机的整个生态环境。各大手机厂商采用麒麟OS!

华为手机要想超过iPhone的流畅性,我觉得短时间内很难做到,毕竟iPhone根正苗红,是苹果自己家的系统。

不过,还是真要给华为的创新研发能力点赞,中国人的骄傲!希望多一点像华为的企业!

如果安卓解决卡顿问题,你会放弃iPhone买安卓手机吗?欢迎留言!


AI科技猿


感谢邀请:我是科技数码随时答,很高兴能回答这个问题

余承东称方舟编译器可以让华为手机性能超过苹果,你怎么看?

每一次发布会上面说的东西,我们在下面使用的时候总是达不到理论值,不管是拍照还是手机性能,以及跑分等等,所以对于现在很多厂商,不管是华为还是小米等等厂商说的话,其实很多消费者已经不相信了,对于华为的方舟编译器虽然看好,但是希望我们用的时候可以和他发布会说的一样系统流畅度提升24%,如果真的可以达到华为在发布会上面说的,确实和ios系统有的一拼,但是实际使用和宣传我们都知道。。。。。

方舟编译器的原理是什么:

编译器我们可以简单的理解为工具,因为我们常说的程序员写程序所使用的编程语言,以及程序在CPU上执行时的语言,是完全不同的。因为CPU执行的是汇编语言,那么我们就需要到把高级编程语言转化成汇编语言的这个过程所需要的工具,就叫做编译器。其实简单的来说就像是我们需要把文言文转化成为白话文,中间要借助的词典或者是资料就是我们所讲的工具编译器。

安卓系统本身因为碎片化严重,而且为了保证兼容性采用的是虚拟机,所以不得不在手机上完成程序编译。传统做法是在应用安装时或者系统空闲是进行编译,可是手机端的资源原本就十分有限,所以“边解释边运行”的执行方式势必会造成大量的随机卡顿,当然现在也是这样的方式,只是现在有了很大的提升,但是有时候还是会有卡顿。

方舟编译器就是将传统的app源代码打包成apk的方式进行了优化,从而使得app在安卓系统上可以实现全程使用机器码执行程序,从而改善了安卓app原本的“边解释边执行”造成的系统卡顿。而苹果的ios系统执行程序时使用的是CPU可以直接理解的机器码,无需解析过程,这也是安卓系统流畅度不如ios的主要原因。


总结:当然华为的方舟编译器能做的事,实际上已经远超“编译器”这个概念了。据说方舟编译器的实现原理,是把app的源代码重新编译成不同于安卓原本的打包格式。这件事情本身来说的并不是很难,但是难点在于文章开头提到的优化到什么程度是否和发布会说的一样,第二点就是各大厂商的参与程度,决定这件事情的可行性,所以我们现在只能拭目以待,所以是否可以超越ios系统还是一个未知数。


回答完毕

欢迎留言发表不同的看法和想法:

科技数码随时答


苹果的iOS系统之所以运行流畅,所有APP在上面的使用感受特别好,主要源于也是类似于方舟编译器的工作原理。

而Android阵营的手机,由于品牌众多,型号众多,千差万别的硬件配置,导致在安卓平台上,所有APP包括安卓系统,有着天然的烈士。儿童而通过方舟编译器之类的软件,对所有APP,进行进一步优化和对平台进行适配,会劲会大大提高软件的流畅度和系统运行的流畅度。这也是目前解决安卓手机,使用感受,不如苹果手机的最好办法。


嗨老乐儿


余承东称方舟编译器可以让华为手机性能超过苹果,你怎么看?这就是华为的底气,能够把安卓系统给优化到超过iOS的性能,确实一件很了不起的事情。也许未来iOS的相对衰落也并不是不可能。

被华为称为一项革命性的突破,显然方舟编译器不是小打小闹的产品。对安卓系统架构进行优化、把应用程序代码编译打包为可立即执行的机器码,打破安卓系统“边解释边执行”的低效率,无疑是一个巨大的突破。


很多用户购买苹果手机的一个最重要的因素,就是iOS系统流畅性。而如今如果能够解决安卓系统流畅性问题,那么如此高价格的苹果就没有什么优势可言,用户转向到更低价格更有性能的安卓机,会是一个很自然的过程。不过经过方舟编译器处理的系统,如果长时间使用是否变得臃肿和缓慢,目前还未可知。

不管怎么样华为至少已经打破了安卓这么久以来流畅性没有突破性进展的状况,也许华为方舟编译器只是一个开始。目前测试的结构通过方舟编译器编译后,系统流畅度提升24%、系统响应速度提升44%、三方应用操作流畅度提升60%,这是相当大的提升。

华为后续定会对安卓系统进行持续的优化,也会对方舟编译器进行持续性的优化,相信它们都会变得越来越快越来越流畅。围绕华为手机的应用越来越多,其生态也许很快构建起来,到华为自研系统启用时,生态建设就会更加顺畅与快捷。


更多分享请关注【东方高扬】。


东风高扬


不吹牛就不叫大嘴了,不过实事求是的讲:方舟编译器是目前为止华为(手机部门)最拿得出手的东西,这毕竟是底层技术,众所周知越往底层,技术难度越高,国内厂商能拿出手的底层技术几乎为零,全都活跃在应用层抢饭吃,所以说某种意义上这次拿出的方舟编译器其技术含量超过海思芯片设计,更远超50倍变焦,必须给个赞!


yihainan_new


那是不可能的,苹果IOS是安桌不可超越的,不管你华为如何优化都是安桌!980如何有A12

优秀!

老余吹牛逼了


分享到:


相關文章: