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

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

3天内不再提示

什么是方舟编译器?

电子工程师 来源:YXQ 2019-05-09 16:45 次阅读

“它就是能让安卓上的应用,跑得跟苹果iOS上一样快。”面对台下的记者,华为消费者BG软件部总裁王成录这么描述方舟编译器的作用。

此时,距离这个吊起了安卓应用开发者们兴趣的编译器在发布会上被公开,正好过去了两周。

什么是方舟编译器?

在4月11日的华为P30中国发布会上,华为消费者业务CEO余承东正式发布了华为方舟编译器,并表示这个编译器能改善安卓应用编译效率,从原先的边解释边执行转变为全程机器码高效运行程序。

编译器,就是将“一种计算机语言(通常为高级语言)”翻译为“另一种计算机语言(通常为低级语言)”的程序。高级计算机语言便于开发者们编写、阅读交流以及维护,如Pascal、C、C++Java等,而低级机器语言是计算机能直接解读、运行的机器代码(Machine code)。

华为的方舟编译器,就是将安卓应用开发者们所使用的JAVA、C/C++们转换成机器代码。据王成录透露,华为从2009年就开始考虑做编译器,“因为咱们海思做了芯片以后,需要有自己的编译器才能真正发挥芯片的能力,从2013年开始,有华为自己的自研编译器了,叫HCC。”

根据时间表显示,在2012年,华为成立了编译器与编程语言实验室,在2014年,威廉希尔官方网站 大牛Fred Chow加入华为负责编译器的主架构,经过十年的摸索,华为终于推出了方舟编译器。

根据华为官方公布的数据显示,与此前的安卓应用开发相比,方舟编译器能够提升24%的系统操作流畅度,提升44%的系统响应能力,还能提升60%的第三方应用(微博极速版)操作流畅度。

它是怎么做到的?

01

消除了跨语言调用开销

王成录向记者们详细阐述了方舟编译器能提升流畅度、响应能力的工作原理

首先,方舟编译器是多语言联合优化编译器,“消除了跨语言调用开销,这是影响Android性能开销比较大的核心原因之一。”

据王成录介绍,目前Android应用市场里95%的APP都是多种开发语言:“逻辑部分,都是Java代码,但是为了增强它的能力,可能所有的APP的开发者,都会用C写个库供Java来调用。”

Java是一门面向对象编程语言,具有简单性、面向对象、分布式等特点,虽然运行效率不及C++,但开发效率高、跨平台性更强的优势,让JAVA成为了安卓开发的首选,而通过JNI调用本地C/C++库也是目前开发者们都在做的。

但,Java和C语言之间使用接口调用,必然会形成额外的性能开销;王成录表示,华为方舟编译器将不同语言代码在开发环境中编译成一套可执行文件,这样执行效率更高。

02

消除了影响性能的虚拟机机制并实时回收内存

王成录认为华为方舟编译器的第二大特点是消除了影响性能的虚拟机机制。

在安卓系统发展过程中,虚拟机不可被忽视:Android系统是以Linux为内核构建的,为了降低应用的开发难度,并将其适配到不同硬件配置的设备上,Google在Linux内核之上构建了一个虚拟机,Android应用使用java开发,运行在虚拟机之上。

在安卓4.4之前,Dalvik就是安卓系统上使用的虚拟机,基于寄存器。从Android 2.2开始,Dalvik开始使用JIT(Just In Time)威廉希尔官方网站 来进行代码转译,将频繁调用的代码转换为二进制码,不用每次解释,而在此前Dalvik虚拟机将所有的Java语句逐句解释执行,效率很低。

但Dalvik越来越不能满足需求,从Android 5.0开始,虚拟机从Dalvik换成了ART。

ART(Android RunTime)虚拟机,采用AOT(Ahead Of Time)威廉希尔官方网站 ,会在应用程序安装时就预编译字节码到机器语言,不再在执行时解释,从而优化了应用运行的速度。

所以,到目前为止,安卓系统的任何机器只要装上应用装上就会分配好虚拟机,占用额外的系统资源,消费者从应用市场下载APP以后,真正解释成机器指令和执行文件是在手机上的虚拟机里做的,因此对系统资源要求高。

王成录表示,ART的执行效率虽然提高了,但是对于那些Java动态特性的部分,仍然做不到直接编译,还是要解释执行。

这源于Java不是Python那样的动态语言,但开发者经常会用到它一个非常突出的动态相关机制:反射机制。Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类、在运行时构造任意一个类的对象、在运行时判断任意一个类所具有的成员变量和方法、在运行时调用任意一个对象的方法、生成动态代理。

王成录表示,Java动态特性使得开发者“不需要把所有的程序都写好,只要能够运行时实现调用就可以了。”但这部分往往只能在运行时进行处理。而方舟编译器最大的突破就在于此:把动态的部分全部静态编译掉。

这确实很难。

王成录认为,这就像一个优秀的翻译官,一定要对汉语言文学理解的非常到位,然后再对英语理解非常到位;所以,核心是一定要对Java语言动态特性非常深入的了解和理解,“Java有非常多的库和业务逻辑,这些业务逻辑它生成各种各样的应用和代码和业务逻辑,这些业务逻辑就需要团队不断地去理解它,这个理解有点类似于做代码测试的遍历一样,我让这个代码全跑到,才知道可不可以,它需要非常多的时间去积累,我对于库的理解,当然需要威廉希尔官方网站 ,我理解这个库本身的具体含义,有点像AI里面,我要收集东西,训练一个模型。如果这个东西没有的话,我训练出来的模型不好,我这个机器没法执行,这个道理特别像。”

然后还需要对这些安卓现有的应用可能会用到哪些库、这些库之间需要怎么用,需要大量的分析运行状态,才能够将这些动态特性完成提前的编译。“实际上华为对于Android整个系统各种应用的运行,做了非常仔细去确认,相当于一个应用从底层起来,一直跑完以后,到底经过哪些过程,这些过程可能会带来什么问题?去哪些库取东西,这些东西积累越多,放到动态库里面,把它编译完了。有了这2个积累,才能做成这件事情。”

对于效果,有开发者向网易科技表示,“做成了静态编译,速度肯定会更快。”

方舟编译器还能提供更高效的内存回收机制。

王成录表示,Android的原生内存回收,在全局回收时需要暂停应用,等待回收完成,这是产生随机卡顿的重要原因,“而在方舟编译器里,会在编译时为程序配备及时回收的内存处理机制,在程序执行过程当中实时处理。”

03

可以灵活实现不同应用的性能优化

王成录表示,方舟编译器的第三个亮点是可以灵活实现不同应用的性能优化。

他表示,现有的安卓编译大部分代码在虚拟机环境运行,而虚拟机的创建由于来自于同一套“模板”,难以作深度的优化:不同应用的优化诉求不一样;相比之下,方舟编译器不一样,每个应用编译优化方案自己来定,分别形成不同应用优化后的机器码,“相当于说,我们给每一个有追求的应用开发者,都有了一个把自己的应用做的更好的机会,不再受限于Android虚拟机的限制。”

王成录称,方舟编译器最理想的目标就是“上层业务代码不需要改,大家只需要通过华为的方舟编译器做重新编译就足够了。”

他希望,Android阵营所有合作伙伴大家一起努力,从各自场景、各自平台不断去打磨它。

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

    关注

    216

    文章

    34470

    浏览量

    251946
  • 编译器
    +关注

    关注

    1

    文章

    1634

    浏览量

    49154
  • 方舟编译器
    +关注

    关注

    0

    文章

    60

    浏览量

    219

原文标题:让华为P30运行如飞的,是这个叫方舟的……

文章出处:【微信号:smartman163,微信公众号:网易智能】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Triton编译器与GPU编程的结合应用

    Triton编译器简介 Triton编译器是一种针对并行计算优化的编译器,它能够自动将高级语言代码转换为针对特定硬件优化的低级代码。Triton编译器的核心优势在于其能够识别并行模式,
    的头像 发表于 12-25 09:13 232次阅读

    Triton编译器如何提升编程效率

    在现代软件开发中,编译器扮演着至关重要的角色。它们不仅将高级语言代码转换为机器可执行的代码,还通过各种优化威廉希尔官方网站 提升程序的性能。Triton 编译器作为一种先进的编译器,通过多种方式提升编程效率,使得
    的头像 发表于 12-25 09:12 224次阅读

    Triton编译器在高性能计算中的应用

    高性能计算(High-Performance Computing,HPC)是现代科学研究和工程计算中不可或缺的一部分。随着计算需求的不断增长,对计算资源的要求也越来越高。Triton编译器作为一种
    的头像 发表于 12-25 09:11 232次阅读

    Triton编译器的优化技巧

    在现代计算环境中,编译器的性能对于软件的运行效率至关重要。Triton 编译器作为一个先进的编译器框架,提供了一系列的优化威廉希尔官方网站 ,以确保生成的代码既高效又适应不同的硬件架构。 1. 指令选择
    的头像 发表于 12-25 09:09 223次阅读

    Triton编译器的优势与劣势分析

    Triton编译器作为一种新兴的深度学习编译器,具有一系列显著的优势,同时也存在一些潜在的劣势。以下是对Triton编译器优势与劣势的分析: 优势 高效性能优化 : Triton编译器
    的头像 发表于 12-25 09:07 249次阅读

    Triton编译器在机器学习中的应用

    1. Triton编译器概述 Triton编译器是NVIDIA Triton推理服务平台的一部分,它负责将深度学习模型转换为优化的格式,以便在NVIDIA GPU上高效运行。Triton编译器支持
    的头像 发表于 12-24 18:13 381次阅读

    Triton编译器支持的编程语言

    Triton编译器支持的编程语言主要包括以下几种: 一、主要编程语言 Python :Triton编译器通过Python接口提供了对Triton语言和编译器的访问,使得用户可以在Python环境中
    的头像 发表于 12-24 17:33 364次阅读

    Triton编译器与其他编译器的比较

    Triton编译器与其他编译器的比较主要体现在以下几个方面: 一、定位与目标 Triton编译器 : 定位:专注于深度学习中最核心、最耗时的张量运算的优化。 目标:提供一个高度抽象、灵活、高效
    的头像 发表于 12-24 17:25 375次阅读

    Triton编译器功能介绍 Triton编译器使用教程

    Triton 是一个开源的编译器前端,它支持多种编程语言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一个可扩展和可定制的编译器框架,允许开发者添加新的编程语言特性和优化威廉希尔官方网站
    的头像 发表于 12-24 17:23 414次阅读

    AI编译器威廉希尔官方网站 剖析

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

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

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

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

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

    鸿蒙开发:【OpenHarmony 4.0 Release指导】

    OpenHarmony 4.0版本如期而至,开发套件同步升级到API 10。相比3.2 Release版本,新增4000多个API,应用开发能力更加丰富;HDF新增200多个HDI接口,硬件适配更加便捷;我们持续优化图形框架和方舟编译器(ArkCompiler)
    的头像 发表于 05-14 09:59 1503次阅读
    鸿蒙开发:【OpenHarmony 4.0 Release指导】

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

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

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

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