传说中的诺亚方舟可以拯救全人类,那么活在现实的方舟编译器是否真的能突破 Android 系统性能原有的限制?

(图源:CSDN 付费下载自东方 IC)

要说上个月于巴黎召开的 P30 系列发布会,华为是以全硬件正面刚苹果,那么 4 月 11 日在上海面向国内市场推出 P30 系列手机的发布会,华为就是以不经意的姿态撩了一下 Google。

之所以这么讲,是因为这一次的发布会,引发国内消费者热烈追捧的不仅是比国际版价格要低 2000 元左右的 P30 系列,还有着让技术圈为之热议的大事件,即华为消费者业务 CEO 余承东在发布会上仅花费短短两分钟时间“随口一提”且富有神秘感的 Android 系统性能的革命性突破应用——方舟编译器。

没有一个硬实力,哪能随便提革命性突破?

其实单从名称上来看,不少人的第一感观就是“高大上”,另外,其似乎也隐喻着未知的创新、无限的潜力以及丰富的扩展性等愿景。而对于这个名字的由来,不少网友猜测这可能与华为研发美国编译技术首席科学家 Fred chow 有关:

第一,他是开源 Open 64 编译器的首席架构师,具有 25 年的编译器经验,于 2014 年加入华为硅谷子公司 FutureWei;

第二,Fred chow 音译过来可以看成是“方舟”。

那么真实的方舟编译器究竟具有怎样的“魅力”?根据余承东在发布会现场的解释,华为方舟编译器可解决 Android 程序“边解释边执行”的低效,能达到架构级优化,且显著提升性能。

为此,余承东还以汽车运行的例子来凸显两种的差别:

现有的 Android 系统:存在边解释边执行的低效现象;

使用华为方舟编译器:全程执行机器码高效运行程序。

其中,边解释边执行是怎么一回事?全程执行机器码又是什么情况?

Android 编译器原理

首先,不少程序员可能都知道,对于 CPU 而言,无论是用 Java、C/C++、还是用 Python 来写应用,结果都一样,因为其根本无法直接识别代码。毕竟当前的计算机只能根据电压的高低变化来计算,即高电压是 1 ,低电压是 0, 而这种数制方式被称之为二进制。二进制代码语言又被称为机器语言,计算机可以直接识别。因此无论是 Android 应用还是 iOS 应用,想要在 CPU 中运行,都需要经过翻译或者编译成机器码。

接下来,将以 Android 平台举例说明,众所周知,大多数的 Android 应用都是由 Java 开发而成,而 Java 代码的执行依赖于 Java 虚拟机(JVM),其提供了字节码文件(.class)的运行环境支持,即在 Java 程序编译成 .class 文件之后,由 JVM 将程序解释给本地系统执行,其中,后者的过程通常被叫做「解释执行」。

此外,还有一种叫做「编译执行」的模式,这种模式主要分为两种:

JIT(Just-in-time,即时编译),边运行边编译;

AOT(Ahead-Of-Time,运行时编译),在程序运行前编译,可以避免在运行时的编译性能消耗和内存消耗。

就 Android 系统而言,首次引入 JIT 功能是在 Android 2.2 版本中,彼时Google 的目的是为了提高 Android 的运行速度,即当 App 运行时,JIT 编译器就会对新类进行编译,经过编译后的代码,会被优化成相当精简的原生型指令码,这样在下次执行到相同逻辑的时候,速度就会更快。不过好景不长,JIT 在运行时编译开销大,容易造成卡顿,所以在 4.4 版本之后,Dalvik 虚拟机被逐渐抛弃的过程中,JIT 也被弃用了。

而在随后的 Android 5.0 系统中,ART 正式取代了 Dalvik,ART 中完全抛弃了 JIT,使用的是 AOT 的编译方式,这种方式的好处是,当 App 在第一次安装时,字节码会预先编译成原型指令码,让其成为真正的本地应用,这样App 的启动及运行速度都会大幅提升。不过这种方式也存在巨大的缺陷,一是安装应用时需要全面编译,用户等待安装的时间过长;二是安装过程中翻译出来的机器码占用了大量的内存空间。

因此,Google 为在安装时间、内存占用、电池消耗和性能之间获得折中方案,又于 Android 7.0 版本重新加入了 JIT 编译模式,即当前的 Android 系统引入的是包含编译、解释和 JIT 的混合运行时。详细而言,当 App 安装时,首先不用像 Android 6.0 中对应用进行完整的预编译,而会根据 JIT 编译器的分析结果,一方面,在设备充电或其余空闲时间对「cold code」进行解释;另一方面,对「hot code」在实际使用时由 JIT 进行编译。

来源:https://source.android.google.cn/devices/tech/dalvik/jit-compiler

以上即为华为所述的原有 Android 系统存在边解释边执行的低效现象,至于方舟编译器如何达成全程执行机器码高效运行程序的?

由于该项目暂时还上线开源,目前尚未可知。不过对此不少开发者猜测,方舟编译器更可能是直接将应用程序的安装包,即 APK 打包成机器码格式,得以让系统可以直接识别。最终结果我们还需等待该项目开源之后才能揭晓谜底。

华为方舟编译器将会对 Android 系统带来什么样的影响?

不过,余承东于现场表示,通过方舟编译器,不仅可以解决应用卡顿的问题,还可以为系统操作流畅度提升 24%、系统响应速度提升 44%,第三方应用操作流畅度提升 60%。同时余承东也呼吁,希望 App 开发厂商尽快使用。

这样看起来,性能大幅提升之后的 Android 应用与 iOS 系统中的应用差距正在逐步缩小,甚至大有超过的趋势。事实上,方舟编译器能实现这样的性能提升,无论是对企业、开发者,还是对用户而言,也无疑都是一件好事。而对于华为本身而言,从上个月余承东在接受德国《世界报》采访时表示华为已经为智能手机和电脑开发了自己的操作系统,以防美国科技巨头不再向其授权现有系统后,到这一次透露即将开源的编译器,整体也可看成是华为正在为其尚未面世的操作系统的生态系统布局做好充足的准备。

那么,对此,你怎么看?

参考:

https://m.mydrivers.com/yidian/newsview.aspx?tid=523860&s=cm

https://blog.csdn.net/yifanyingying/article/details/79368410
————————————————
版权声明:本文为CSDN博主「CSDN资讯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/csdnnews/article/details/89346465

助力 Android 抗衡 iOS,华为发布方舟编译器!相关推荐

  1. 华为正式发布方舟编译器,相关源码已开放下载;微软开源量子开发工具包 QDK;GitHub回应突然断供:也很无可奈何的样子……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  2. 【每日新闻】华为推出方舟编译器称可提升安卓系统效率

    点击蓝字关注我们 更多精彩,请点击上方蓝字关注我们! 智慧属于人类,而风格属于作家. -- 莫佩尔蒂 中国软件网每日精选集 每日新闻播报 第04-11期 1 趋势洞察 胡海波:2019年全球CDN市场 ...

  3. 华为宣布方舟编译器将开源;​苹果秋季发布会定档9月10日;TypeScript 3.6 发布 | 极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  4. 华为宣布方舟编译器将于8月31日

    昨日华为EMUI官方微信公众号发文宣布,方舟编译器开源准备就绪,将于8月31日开源. 并配文道: 方舟扬帆,开源启航 开放共赢,携手共进 8月31日 我们与你一起驶入开源的星辰大海 今年 4 月份华为 ...

  5. 方舟编译器编译linux,华为开源方舟编译器,相关源码已开放下载?

    2019华为全球开发者大会将在8月9日-11日在华为松山湖基地召开.本次开发者大会邀请了1500位合作伙伴.5000名全球开发者,将是华为历来规模最大的一次会议.根据此前海报,方舟编译器将成为2019 ...

  6. 漫谈国内外Android生态:华为发布的 HMS 服务,对 Mate30 系列无法搭载 Google GMS 的补偿有多大(本人原创)

    如果既用过iPhone,也用过国际版Android,还用过国内的安卓,(并且这三种都用了半年以上),就能体会到GMS多重要.可以说,iOS的体验大幅度领先于国内的安卓,一多半的原因是国内安卓没有GMS ...

  7. 站点能源低碳目标网,助力网络碳中和 | 华为发布站点能源十大趋势

    2022年12月29日,华为今天举办站点能源十大趋势发布会并重磅发布白皮书.发布会上,华为站点能源领域总裁尧权全面解读了能源数字化.低碳网络.站点供电绿色化等站点能源十大趋势. 尧权表示,2022年是 ...

  8. c语言代码闭源,开源被喷,闭源被疑:方舟编译器怎么这么难?

    声明:本文来自于微信公众号 InfoQ(ID:infoqchina),作者:赵钰莹,授权站长之家转载发布. 闭源时被质疑是否真的存在这样一个编译器,开源后又被喷技术含量不行,方舟编译器怎么就这么难?本 ...

  9. android 方舟编译器,华为方舟编译器:Android 的性能革命

    Android 所有的应用在编译打包的时候实际上是都打包成了字节码,而我们的手机 CPU 并不认识字节码,它们只认识机器码.于是我们需要在 App 和 CPU 之间添加一位「翻译」,App 才能够正常 ...

最新文章

  1. c语言想调用函数怎么弄43,如果想要调用这个函数,还应该怎么写
  2. Selenium Webdriver原理终于搞清楚了
  3. Linux编译安装中configure、make和make install各自的作用详解
  4. Leecode03. 无重复字符的最长子串——Leecode大厂热题100道系列
  5. 微软程序员利用测试账户套现千万美元,或面临 20 年监禁
  6. [译]第三章:什么是组织结构
  7. 【youcans 的 OpenCV 例程 200 篇】107. 退化图像的维纳滤波
  8. 七年也扶不起的苹果 Siri
  9. 编译Android指定JDK/OpenJdk版本
  10. 光遇自动弹琴脚本代码_光遇自动弹琴脚本
  11. 64位计算机可以安装xp,64位xp系统如何安装【图解】
  12. 前端-js网页特效(三)动画效果及原理
  13. 腾讯电脑管家修复代理服务器,腾讯电脑管家修复msvcp140.dll丢失的方法
  14. PS和AI矢量电子签名制作(详细)
  15. 【BZOJ2434】【NOI2011】阿狸的打字机(AC自动机及Fail树的性质,树状数组)
  16. 学生计算机机房管理系统设计
  17. Linux下rsh服务配置
  18. Weblogic安装时闪退,无法进行下一步问题
  19. C语言关键字浅析-enum
  20. 三菱je-a系列伺服支持modbusrtu 协议吗_你了解吗?全新正品英飞凌模块全新现货...

热门文章

  1. 高中计算机会考选修三知识点,2020高二物理会考知识点总结三篇
  2. propertyeditor java_PropertyEditor使用
  3. 的引用_懵!啥是Java软引用、弱引用、虚引用?
  4. Linux中errno的含义
  5. 使用gridlayout布局后,因某些原因又删除,并整理文件夹结构时,Unable to resolve target #39;android-7#39;...
  6. Entity Framework 相关知识点合集
  7. (Excel)常用函数公式及操作技巧之四:文本与页面设置(一)
  8. 深入探究ConvNets vs. Transformers,哪种预训练模型的可迁移性更好?
  9. 实时语义分割算法大盘点
  10. 黑科技DeepFake检测方法:利用心跳做信号,还能「揪出」造假模型