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

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

3天内不再提示

华为方舟编译器详解 到底有什么用

454398 来源:工程师吴畏 2019-04-26 11:42 次阅读

4月11日,华为春季发布会上,除了P30系列,另外一个词也在程序员届火了一把——华为方舟编译器。据介绍,华为方舟编译器可以让安卓性能突飞猛进。

近日,华为王成录博士对方舟编译器的原理进行了讲解,表示华为从2009年就创建编译组,期间推出自研编译器HCC、编程语言CM等,一直到如今推出了方舟编译器。 下面是详细讲解内容。

什么是编译器

编译器是连接人类世界与机器世界之间的一座桥梁,同时也扮演着“翻译者”的角色。

它将程序员使用的高级语言翻译成机器能明白的机器码,从而使得手机能够听懂并执行人类的指令。

现有的安卓系统主要是在手机上进行编译,往往有部分程序需要一边转换一边执行,影响程序执行的效率。

编译器优化对程序运行性能及用户体验有显著影响,它的开发,从系统软件到应用软件,需要投入大量的时间和精力进行研发,这一板块在国内尚属“无人区”。

华为已经在研发编译器的路上积累了多年,早至2009年华为就创建了编译组,到2013年推出自研编译器HCC,对于华为在移动通信领域领先起到了关键作用,这背后是华为人前赴后继的努力和无数次尝试,终于,在2019年方舟编译器正式与大家见面。

方舟编译器,安卓性能革命突破

当前大部分安卓应用都涉及不同开发语言,不同语言形成的代码需要在运行态中进行协同从而产生额外消耗。

而方舟编译器是业界首个多语言联合优化的编译器,开发者在开发环境中可以一次性将多语言统一编译为一套机器码,运行时无需产生跨语言带来的额外消耗,并可以进行跨语言的联合优化,提升运行效率。

安卓自身的编译技术在不断的发展,但始终需要在运行中依赖虚拟机来进行动态编译和解释执行,对系统资源消耗较大。

而方舟编译器在开发环境中就可以完成全部代码的编译,手机安装应用程序后无需依赖虚拟机资源,即可全速运行程序,带来效率上的极大提升。

举一个例子:EMUI 9.1仅仅对系统组件System Server应用了华为方舟编译器后,就带来了系统操作流畅度提升24%,系统响应性能提升44%的收益。

方舟编译器,高效的回收机制

内存管理是程序开发与运行时需要重点考虑的部分,也和系统流畅度息息相关。

安卓在内存回收上采用集中回收机制,发声全局回收时更需要暂停应用,这也是随机卡顿的根因之一。

而方舟编译器提供了更高效的内存回收机制,回收时无需暂停应用,随时用随时回收,大大提高运行速度。

方舟编译器,应用级编译优化

代码优化是编译器最为核心的功能,也是评判一个编译器优劣最重要的标准。

当前由于安卓应用使用了虚拟机机制,难以面向不同应用对虚拟机进行针对性的灵活优化。

安卓ART的AoT和JIT动态编译因为是运行在手机上,受资源所限,因而只能使用简单的优化算法

而方舟编译器由于是在应用开发阶段进行编译,所以可以允许不同应用灵活采用不同的编译优化方案,而且因为在开发环境编译不会受到手机性能的限制,可以使用更多先进的优化算法,从而使得每个应用的性能达到最佳。

简单易用,开放开源

华为在持续进行技术创新的同时,也注重将技术成果回馈行业,华为方舟编译器在开发构建的阶段为开发者提供快速的集成编译环境,大大降低了开发者的学习成本和使用成本,令产业与更多用户受益。

华为方舟编译器会从2019年开始全面开源,邀请整个产业和生态来一起共同关注和提升安卓性能体验。

继华为P30系列发布会方舟编译器开源后,将在2019年8月的华为终端开发者大会宣布方舟编译框架代码开源,后续会在2019年11月的绿盟开发者大会实现完整方舟编译器代码开源。

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

    关注

    215

    文章

    34263

    浏览量

    251040
  • 编译器
    +关注

    关注

    1

    文章

    1617

    浏览量

    49019
  • 方舟编译器
    +关注

    关注

    0

    文章

    60

    浏览量

    181
收藏 人收藏

    评论

    相关推荐

    C7000优化C/C++编译器

    电子发烧友网站提供《C7000优化C/C++编译器.pdf》资料免费下载
    发表于 10-30 09:45 0次下载
    C7000优化C/C++<b class='flag-5'>编译器</b>

    RTOS与Linux到底有什么区别

    很多做嵌入式开发的小伙伴都存在这样的疑惑:RTOS与Linux到底有什么区别?
    的头像 发表于 10-29 09:53 252次阅读

    Keil编译器优化方法

    我们都知道,代码是可以通过编译器优化的,有的时候,为了提高运行速度或者减少代码尺寸,会开启优化选项。
    的头像 发表于 10-23 16:35 272次阅读
    Keil<b class='flag-5'>编译器</b>优化方法

    AI编译器技术剖析

    随着人工智能技术的飞速发展,AI编译器作为一种新兴的编译技术逐渐进入人们的视野。AI编译器不仅具备传统编译器的功能,如将高级语言编写的源代码转换为机器可执行的代码,还融入了人工智能技术
    的头像 发表于 07-17 18:28 1418次阅读

    人工智能编译器与传统编译器的区别

    人工智能编译器(AI编译器)与传统编译器在多个方面存在显著的差异。这些差异主要体现在设计目标、功能特性、优化策略、适用范围以及技术复杂性等方面。以下是对两者区别的详细探讨,旨在全面解析其内在差异。
    的头像 发表于 07-17 18:19 1633次阅读

    Meta发布基于Code Llama的LLM编译器

    近日,科技巨头Meta在其X平台上正式宣布推出了一款革命性的LLM编译器,这一模型家族基于Meta Code Llama构建,并融合了先进的代码优化和编译器功能。LLM编译器的推出,标志着Meta在人工智能领域的又一重大突破,将
    的头像 发表于 06-29 17:54 1445次阅读

    IPv6到底有什么用,给我们生活带来哪些变化?

    IPv6是下一代互联网协议,与IPv4相比,具有更多的地址空间和更好的性能。随着互联网的普及和发展,IPv6的用途也越来越广泛,已经在生活中发挥了重要作用。那IPv6到底有什么用,给我们生活带来
    的头像 发表于 03-29 14:00 1172次阅读
    IPv6<b class='flag-5'>到底有</b><b class='flag-5'>什么用</b>,给我们生活带来哪些变化?

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

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

    网线到底有多少种连接

    我们在谈论网线的时候,聊得最多的,一定是它的连接,它在连接过程中扮演着极为重要的角色。网线到底有多少种连接?本期我们将从工业级使用出发,来看看这根似乎普通的网线,在连接上有多么努
    的头像 发表于 01-26 10:06 551次阅读

    AD9781或是AD9783芯片的DCOP/DCON信号什么用

    1,AD9781或是AD9783芯片他的DCOP/DCON信号什么用?能举个例么,我看了下他们的PDF文档,好像没感觉出来他到底有什么用,用在哪些方面? 2,如果AD9781或是A
    发表于 12-18 06:41

    Triton编译器的原理和性能

    Triton是一种用于编写高效自定义深度学习原语的语言和编译器。Triton的目的是提供一个开源环境,以比CUDA更高的生产力编写快速代码,但也比其他现有DSL具有更大的灵活性。Triton已被采用
    的头像 发表于 12-16 11:22 2671次阅读
    Triton<b class='flag-5'>编译器</b>的原理和性能

    TVM编译器的整体架构和基本方法

    将近两个月没有学习一些新东西,更新一下博客了。一直在忙公司的一个项目,是做一款支持LSTM和RNN的通用架构加速IP。自己恰好负责指令编译工作,虽然开始的指令比较粗糙,没有一套完整的编译器架构
    的头像 发表于 11-30 09:36 2250次阅读
    TVM<b class='flag-5'>编译器</b>的整体架构和基本方法

    天线形状那么多,到底有什么用

    天线形状那么多,到底有什么用? 天线是一种用于无线通信的关键设备,它们的不同形状和设计具有特定的功能和应用。在本文中,将详细介绍不同形状的天线及其用途。 1. 垂直天线 垂直天线是最常见的一种天线
    的头像 发表于 11-28 15:27 1532次阅读

    pcb仿真技术什么用

    pcb仿真技术什么用
    的头像 发表于 11-28 15:22 1060次阅读

    编译器的优化选项

    这一点,需要了解编译器的能力和限制;第三,要了解硬件的运行方式,针对硬件特性进行优化。本文着重展开第二点和第三点。 简单认识编译器 要写出高性能的代码,首先需要对编译器基础的了解,原
    的头像 发表于 11-24 15:37 842次阅读
    <b class='flag-5'>编译器</b>的优化选项