0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

媲美iOS 华为方舟编译器它的玄乎所在

h1654155972.5890 来源:fqj 2019-05-07 11:42 次阅读

自华为P30系列发布以来,火了的除了手机新品本身以外,还有近日越来越“红”的黑科技——华为方舟编译器。

改造Android、媲美iOS安卓手机从此不卡顿……一时间,舆论对华为方舟编译器的渲染近乎神话。据说自发布会结束后,华为软件内部团队的电话几乎被打爆,很多开发者都想了解方舟编译器的更多信息

那么,华为方舟编译器究竟是干嘛的?被余承东称为“安卓性能革命”的方舟编译器对于华为手机的战略发展有何意义?对于Android阵营以及整个产业又将带来哪些影响呢?

传统编译器绕不过去的“坎儿”

首先,来看看啥是编译器?

按照定义:编译器是将“一种语言(通常为高级语言)”翻译成能直接被计算机或虚拟机执行的目标代码,编译器的效率将直接影响程序运营性能和效率。

简单来说,编译器就是人类和机器沟通的桥梁。比如一部手机,里面的程序是由程序员使用高级语言开发的,当我们要启动某个程序(比如打开一个APP)的过程中,编译器扮演着“翻译者”的角色,把高级语言转换成机器能读懂的机器码,并按照指令运行。

编译器如此神通广大,但在安卓的世界里,它却有一道绕不过去的“坎儿”那就是VM。VM是运行在安卓程序中的一个虚拟计算机,它还带了2个翻译——解释器和编译器。当用户打开APP过程中,虚拟机开始运行,为了把高级语言转换成机器能听懂的语言,虚拟机中有解释器和编译器两个翻译在运行;解释器好像现场翻译似的,演讲者讲一句它就停下来翻译一句给编译器听,然后编译器结合上下文一次翻译一大段内容让机器听懂。两个翻译同时发声,手机听到的内容只能是断断续续,一边翻译一边执行,这也是安卓卡顿的一个重要来源。

对此,华为消费者BG软件部总裁王成录指出,目前安卓系统主要在手机上进行编译,虽然谷歌一直在不断提升原生安卓编译器效率,比如安卓5.0版本之前安卓采用解释执行+JIT方式,安卓6.0开始尝试ART虚拟机,再之后采用解释执行+JIT+AoT综合模式。不过为了解决安卓程序开发的兼容性问题,ART虚拟机长期存在,安卓编译器可以通过JIT和AoT编译大部分Java语言,但对于Java的动态特性无能为力,仍然需要边解释边执行,这也导致了安卓系统流畅性下降。

四大亮点

从“边翻译边执行”到提前编译机器码

针对安卓系统面临的流畅性问题尤其是编译器问题,华为方舟编译器的特性恰恰能够绕过VM,消除虚拟机动态编译的额外开销,实现了开发和运行效率的兼容并举,从“边翻译边执行”到提前编译机器码,直接执行。

据王成录介绍,华为方舟编译器主要有以下四大亮点:

亮点1.首个多语言联合优化的编译器,消除了跨语言调用开销。当前大部分安卓应用都涉及不同开发语言,不同语言形成的代码需要在运行态中进行协同从而产生额外消耗,而方舟编译器是业界首个多语言联合优化的编译器,开发者在开发环境中可以一次性将多语言统一编译为一套机器码,运行时无需产生跨语言带来的额外消耗,并可以进行跨语言的联合优化,提升运行效率。

亮点2.程序运行时无需依赖虚拟机,减少了资源占用,同时实现了高效的内存回收机制。

亮点3.第三,方舟编译器可以针对不同应用灵活编译优化。

亮点4.对于开发者学习和使用成本非常低。以上这些技术亮点,均能给应用开发者带来更多优化自己应用的机会。

超越苹果三星的重要加码

用华为的话说,方舟编译器编译的应用在开发阶段就已完成。也就是说,只要是经过编译器编译的应用,在应用市场上上架了以后,用户下载的就是编译过的了。

华为测试结果显示,使用方舟编译器最终将提升24%的系统操作流畅度,提升44%的系统响应能力,以及提升60%的三方应用操作流畅度,“Android系统将比iOS系统还要流畅”。这一技术将正式开源给开发者,让所有人都可以使用方舟编译器对应用预编译。

在华为看来,方舟编译器作为全新的系统及应用的编译和运行机制,从DNA层面对安卓进行了改造,解决了安卓应用边解释边运行的低效问题,让手机能直接听懂“高级语言”,可以说是近几年来安卓阵营最大的根本性革新。能够大幅降低安卓系统随机卡顿的问题,打破了人机之间的藩篱,让用户能直观感受到的就是使用体验更加持久流畅。

笔者认为,也许采用方舟编译器之后安卓系统以及应用将比iOS系统还要流畅这个说法可能言过其实,因为iPhone和其搭载的iOS系统独树一帜、在系统流畅性方面仍然领先安卓。但有了方舟编译器,安卓系统流畅性差、应用开启和运行速度势必将得到大幅提升,缩小与iOS的差距,华为也成为首家在系统层面主动寻求颠覆式创新的手机厂商

对于志在超越苹果的华为来说,缩小安卓与iOS系统流畅性的差距,也将助力华为手机在超越苹果尤其是高端市场更进一步增加实力;而对于超越三星成为成全球第一手机厂商的目标来说,虽然方舟编译器将正式开源给开发者,使用方舟编译器对应用进行预编译的APP也可能将在其他品牌手机上适配使用,但估计华为出品的方舟编译器应该还是在华为自家的EMUI系统上更加匹配、性能才能够得到充分发挥,因此对于旨在超越三星夺冠的华为来说,方舟编译器也将成为其争冠之路上的重要砝码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 华为
    +关注

    关注

    215

    文章

    33440

    浏览量

    246695
  • 苹果
    +关注

    关注

    61

    文章

    23572

    浏览量

    191419
  • 编译器
    +关注

    关注

    1

    文章

    1564

    浏览量

    48531
  • 方舟编译器
    +关注

    关注

    0

    文章

    60

    浏览量

    156

原文标题:媲美iOS?华为方舟编译器真有那么玄乎吗?

文章出处:【微信号:C114-weixin,微信公众号:C114通信网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    QT开发学习笔记1(安装交叉编译器

    QT安装交叉编译器
    的头像 发表于 02-18 10:02 242次阅读
    QT开发学习笔记1(安装交叉<b class='flag-5'>编译器</b>)

    华为举办鸿蒙生态千帆启航仪式,余承东公布HarmonyOS NEXT开放申请

    据余承东介绍,为实现核心竞争力的突破,华为通过多年的努力构建出一套包含鸿蒙内核、ArkTS/仓颉编程语言、方舟编译器/毕昇编译器、ArkUI以及盘古AI大模型等在内的完整生态体系。
    的头像 发表于 01-19 09:34 274次阅读

    编译器的优化选项

    一个程序首先要保证正确性,在保证正确性的基础上,性能也是一个重要的考量。要编写高性能的程序,第一,必须选择合适的算法和数据结构;第二,应该编写编译器能够有效优化以转换成高效可执行代码的源代码,要做到
    的头像 发表于 11-24 15:37 361次阅读
    <b class='flag-5'>编译器</b>的优化选项

    新版编译器的设计思路和优化方法

    小程序编译器在小程序开发、预览、发布各个阶段都需要使用,因此编译器性能会直接影响到开发者开发效率,也会影响到开发者工具的使用体验。 由于旧版的编译器(基于 webpack4)在构建大型项目时会很慢,内存占用也高,一直被开发者吐槽
    发表于 10-13 11:21 134次阅读
    新版<b class='flag-5'>编译器</b>的设计思路和优化方法

    OpenHarmony 的js引擎用的是方舟编译器

    OpenHarmony 的js引擎用的是方舟编译器吗?方舟编译器不是用来编译吗?
    发表于 10-09 09:32

    esp32除了用arduino编译器还可以用哪个编译器

    esp32除了用arduino编译器还可以用哪个编译器
    发表于 09-25 06:13

    Keil修改ARM编译器及配置方法

    Keil MDK自 V5.36 版本之后,默认就不带 Arm Compiler V5版本编译器。如果需要使用 V5 版本编译器,就需要自己下载并安装。
    发表于 09-19 10:41 1805次阅读
    Keil修改ARM<b class='flag-5'>编译器</b>及配置方法

    如何安装ARM编译器Linux版

    本教程介绍如何下载、安装、设置您的环境,以及如何开始使用ARM编译器for Linux。 ARM编译器Linux版软件包包括ARM C/C++编译器、ARM Fortran编译器和AR
    发表于 08-28 06:45

    编译器的标准生命周期

    编译器的标准生命周期
    发表于 07-05 19:32 0次下载
    <b class='flag-5'>编译器</b>的标准生命周期

    Neuron 现场编译器用户指南

    Neuron 现场编译器用户指南
    发表于 07-04 20:47 0次下载
    Neuron 现场<b class='flag-5'>编译器</b>用户指南

    SDCC-Linux下的51 MCU编译器

    SDCC (小型设备C编译器)是为8位微控制器开发的免费C编译器。尽管兼容多种不同体系结构,但SDCC C编译器更适合8051内核。 SDCC是命令行固件开发工具,含预处理器、编译器
    的头像 发表于 06-16 15:19 3302次阅读

    是否有8266的BASIC编译器之类的东西?

    8266 的基本编译器,所以我实际上可以在 BASIC 中对进行编程,而不是使用 arduino IDK 对 8266 进行编程。
    发表于 05-16 07:43

    峰会回顾第6期 | 毕昇编译器与OpenHarmony RISC-V生态的进展

    演讲嘉宾 | 曾建江 回顾整理 | 廖   涛 排版校对 | 李萍萍     嘉宾简介 曾建江,亚琛工业大学博士,华为毕昇编译器首席架构师、芯片软件协同设计部部长,拥有多年编译器与芯片软件协同
    的头像 发表于 05-05 15:46 1051次阅读
    峰会回顾第6期 | 毕昇<b class='flag-5'>编译器</b>与OpenHarmony RISC-V生态的进展

    R32C/100系列C编译器包V.1.01 C编译器用户手册

    R32C/100系列C编译器包V.1.01 C编译器用户手册
    发表于 04-28 19:54 1次下载
    R32C/100系列C<b class='flag-5'>编译器</b>包V.1.01 C<b class='flag-5'>编译器</b>用户手册

    C/C++编译器的缺省字节对齐方式

    C/C++编译器的缺省字节对齐方式为自然对界。即在缺省情况下,编译器为每一个变量或是数据单元按其自然对界条件分配空间。
    的头像 发表于 04-15 11:24 682次阅读