91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是方舟編譯器?

電子工程師 ? 來(lái)源:YXQ ? 2019-05-09 16:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

“它就是能讓安卓上的應(yīng)用,跑得跟蘋(píng)果iOS上一樣快。”面對(duì)臺(tái)下的記者,華為消費(fèi)者BG軟件部總裁王成錄這么描述方舟編譯器的作用。

此時(shí),距離這個(gè)吊起了安卓應(yīng)用開(kāi)發(fā)者們興趣的編譯器在發(fā)布會(huì)上被公開(kāi),正好過(guò)去了兩周。

什么是方舟編譯器?

在4月11日的華為P30中國(guó)發(fā)布會(huì)上,華為消費(fèi)者業(yè)務(wù)CEO余承東正式發(fā)布了華為方舟編譯器,并表示這個(gè)編譯器能改善安卓應(yīng)用編譯效率,從原先的邊解釋邊執(zhí)行轉(zhuǎn)變?yōu)槿虣C(jī)器碼高效運(yùn)行程序。

編譯器,就是將“一種計(jì)算機(jī)語(yǔ)言(通常為高級(jí)語(yǔ)言)”翻譯為“另一種計(jì)算機(jī)語(yǔ)言(通常為低級(jí)語(yǔ)言)”的程序。高級(jí)計(jì)算機(jī)語(yǔ)言便于開(kāi)發(fā)者們編寫(xiě)、閱讀交流以及維護(hù),如Pascal、C、C++、Java等,而低級(jí)機(jī)器語(yǔ)言是計(jì)算機(jī)能直接解讀、運(yùn)行的機(jī)器代碼(Machine code)。

華為的方舟編譯器,就是將安卓應(yīng)用開(kāi)發(fā)者們所使用的JAVA、C/C++們轉(zhuǎn)換成機(jī)器代碼。據(jù)王成錄透露,華為從2009年就開(kāi)始考慮做編譯器,“因?yàn)樵蹅?a href="http://m.makelele.cn/tags/海思/" target="_blank">海思做了芯片以后,需要有自己的編譯器才能真正發(fā)揮芯片的能力,從2013年開(kāi)始,有華為自己的自研編譯器了,叫HCC。”

根據(jù)時(shí)間表顯示,在2012年,華為成立了編譯器與編程語(yǔ)言實(shí)驗(yàn)室,在2014年,技術(shù)大牛Fred Chow加入華為負(fù)責(zé)編譯器的主架構(gòu),經(jīng)過(guò)十年的摸索,華為終于推出了方舟編譯器。

根據(jù)華為官方公布的數(shù)據(jù)顯示,與此前的安卓應(yīng)用開(kāi)發(fā)相比,方舟編譯器能夠提升24%的系統(tǒng)操作流暢度,提升44%的系統(tǒng)響應(yīng)能力,還能提升60%的第三方應(yīng)用(微博極速版)操作流暢度。

它是怎么做到的?

01

消除了跨語(yǔ)言調(diào)用開(kāi)銷(xiāo)

王成錄向記者們?cè)敿?xì)闡述了方舟編譯器能提升流暢度、響應(yīng)能力的工作原理

首先,方舟編譯器是多語(yǔ)言聯(lián)合優(yōu)化編譯器,“消除了跨語(yǔ)言調(diào)用開(kāi)銷(xiāo),這是影響Android性能開(kāi)銷(xiāo)比較大的核心原因之一。”

據(jù)王成錄介紹,目前Android應(yīng)用市場(chǎng)里95%的APP都是多種開(kāi)發(fā)語(yǔ)言:“邏輯部分,都是Java代碼,但是為了增強(qiáng)它的能力,可能所有的APP的開(kāi)發(fā)者,都會(huì)用C寫(xiě)個(gè)庫(kù)供Java來(lái)調(diào)用。”

Java是一門(mén)面向?qū)ο缶幊陶Z(yǔ)言,具有簡(jiǎn)單性、面向?qū)ο?、分布式等特點(diǎn),雖然運(yùn)行效率不及C++,但開(kāi)發(fā)效率高、跨平臺(tái)性更強(qiáng)的優(yōu)勢(shì),讓JAVA成為了安卓開(kāi)發(fā)的首選,而通過(guò)JNI調(diào)用本地C/C++庫(kù)也是目前開(kāi)發(fā)者們都在做的。

但,Java和C語(yǔ)言之間使用接口調(diào)用,必然會(huì)形成額外的性能開(kāi)銷(xiāo);王成錄表示,華為方舟編譯器將不同語(yǔ)言代碼在開(kāi)發(fā)環(huán)境中編譯成一套可執(zhí)行文件,這樣執(zhí)行效率更高。

02

消除了影響性能的虛擬機(jī)機(jī)制并實(shí)時(shí)回收內(nèi)存

王成錄認(rèn)為華為方舟編譯器的第二大特點(diǎn)是消除了影響性能的虛擬機(jī)機(jī)制。

在安卓系統(tǒng)發(fā)展過(guò)程中,虛擬機(jī)不可被忽視:Android系統(tǒng)是以Linux為內(nèi)核構(gòu)建的,為了降低應(yīng)用的開(kāi)發(fā)難度,并將其適配到不同硬件配置的設(shè)備上,Google在Linux內(nèi)核之上構(gòu)建了一個(gè)虛擬機(jī),Android應(yīng)用使用java開(kāi)發(fā),運(yùn)行在虛擬機(jī)之上。

在安卓4.4之前,Dalvik就是安卓系統(tǒng)上使用的虛擬機(jī),基于寄存器。從Android 2.2開(kāi)始,Dalvik開(kāi)始使用JIT(Just In Time)技術(shù)來(lái)進(jìn)行代碼轉(zhuǎn)譯,將頻繁調(diào)用的代碼轉(zhuǎn)換為二進(jìn)制碼,不用每次解釋?zhuān)诖饲癉alvik虛擬機(jī)將所有的Java語(yǔ)句逐句解釋執(zhí)行,效率很低。

但Dalvik越來(lái)越不能滿足需求,從Android 5.0開(kāi)始,虛擬機(jī)從Dalvik換成了ART。

ART(Android RunTime)虛擬機(jī),采用AOT(Ahead Of Time)技術(shù),會(huì)在應(yīng)用程序安裝時(shí)就預(yù)編譯字節(jié)碼到機(jī)器語(yǔ)言,不再在執(zhí)行時(shí)解釋?zhuān)瑥亩鴥?yōu)化了應(yīng)用運(yùn)行的速度。

所以,到目前為止,安卓系統(tǒng)的任何機(jī)器只要裝上應(yīng)用裝上就會(huì)分配好虛擬機(jī),占用額外的系統(tǒng)資源,消費(fèi)者從應(yīng)用市場(chǎng)下載APP以后,真正解釋成機(jī)器指令和執(zhí)行文件是在手機(jī)上的虛擬機(jī)里做的,因此對(duì)系統(tǒng)資源要求高。

王成錄表示,ART的執(zhí)行效率雖然提高了,但是對(duì)于那些Java動(dòng)態(tài)特性的部分,仍然做不到直接編譯,還是要解釋執(zhí)行。

這源于Java不是Python那樣的動(dòng)態(tài)語(yǔ)言,但開(kāi)發(fā)者經(jīng)常會(huì)用到它一個(gè)非常突出的動(dòng)態(tài)相關(guān)機(jī)制:反射機(jī)制。Java反射機(jī)制主要提供了以下功能:在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類(lèi)、在運(yùn)行時(shí)構(gòu)造任意一個(gè)類(lèi)的對(duì)象、在運(yùn)行時(shí)判斷任意一個(gè)類(lèi)所具有的成員變量和方法、在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法、生成動(dòng)態(tài)代理。

王成錄表示,Java動(dòng)態(tài)特性使得開(kāi)發(fā)者“不需要把所有的程序都寫(xiě)好,只要能夠運(yùn)行時(shí)實(shí)現(xiàn)調(diào)用就可以了。”但這部分往往只能在運(yùn)行時(shí)進(jìn)行處理。而方舟編譯器最大的突破就在于此:把動(dòng)態(tài)的部分全部靜態(tài)編譯掉。

這確實(shí)很難。

王成錄認(rèn)為,這就像一個(gè)優(yōu)秀的翻譯官,一定要對(duì)漢語(yǔ)言文學(xué)理解的非常到位,然后再對(duì)英語(yǔ)理解非常到位;所以,核心是一定要對(duì)Java語(yǔ)言動(dòng)態(tài)特性非常深入的了解和理解,“Java有非常多的庫(kù)和業(yè)務(wù)邏輯,這些業(yè)務(wù)邏輯它生成各種各樣的應(yīng)用和代碼和業(yè)務(wù)邏輯,這些業(yè)務(wù)邏輯就需要團(tuán)隊(duì)不斷地去理解它,這個(gè)理解有點(diǎn)類(lèi)似于做代碼測(cè)試的遍歷一樣,我讓這個(gè)代碼全跑到,才知道可不可以,它需要非常多的時(shí)間去積累,我對(duì)于庫(kù)的理解,當(dāng)然需要技術(shù),我理解這個(gè)庫(kù)本身的具體含義,有點(diǎn)像AI里面,我要收集東西,訓(xùn)練一個(gè)模型。如果這個(gè)東西沒(méi)有的話,我訓(xùn)練出來(lái)的模型不好,我這個(gè)機(jī)器沒(méi)法執(zhí)行,這個(gè)道理特別像?!?/p>

然后還需要對(duì)這些安卓現(xiàn)有的應(yīng)用可能會(huì)用到哪些庫(kù)、這些庫(kù)之間需要怎么用,需要大量的分析運(yùn)行狀態(tài),才能夠?qū)⑦@些動(dòng)態(tài)特性完成提前的編譯?!皩?shí)際上華為對(duì)于Android整個(gè)系統(tǒng)各種應(yīng)用的運(yùn)行,做了非常仔細(xì)去確認(rèn),相當(dāng)于一個(gè)應(yīng)用從底層起來(lái),一直跑完以后,到底經(jīng)過(guò)哪些過(guò)程,這些過(guò)程可能會(huì)帶來(lái)什么問(wèn)題?去哪些庫(kù)取東西,這些東西積累越多,放到動(dòng)態(tài)庫(kù)里面,把它編譯完了。有了這2個(gè)積累,才能做成這件事情?!?/p>

對(duì)于效果,有開(kāi)發(fā)者向網(wǎng)易科技表示,“做成了靜態(tài)編譯,速度肯定會(huì)更快?!?/p>

方舟編譯器還能提供更高效的內(nèi)存回收機(jī)制。

王成錄表示,Android的原生內(nèi)存回收,在全局回收時(shí)需要暫停應(yīng)用,等待回收完成,這是產(chǎn)生隨機(jī)卡頓的重要原因,“而在方舟編譯器里,會(huì)在編譯時(shí)為程序配備及時(shí)回收的內(nèi)存處理機(jī)制,在程序執(zhí)行過(guò)程當(dāng)中實(shí)時(shí)處理?!?/p>

03

可以靈活實(shí)現(xiàn)不同應(yīng)用的性能優(yōu)化

王成錄表示,方舟編譯器的第三個(gè)亮點(diǎn)是可以靈活實(shí)現(xiàn)不同應(yīng)用的性能優(yōu)化。

他表示,現(xiàn)有的安卓編譯大部分代碼在虛擬機(jī)環(huán)境運(yùn)行,而虛擬機(jī)的創(chuàng)建由于來(lái)自于同一套“模板”,難以作深度的優(yōu)化:不同應(yīng)用的優(yōu)化訴求不一樣;相比之下,方舟編譯器不一樣,每個(gè)應(yīng)用編譯優(yōu)化方案自己來(lái)定,分別形成不同應(yīng)用優(yōu)化后的機(jī)器碼,“相當(dāng)于說(shuō),我們給每一個(gè)有追求的應(yīng)用開(kāi)發(fā)者,都有了一個(gè)把自己的應(yīng)用做的更好的機(jī)會(huì),不再受限于Android虛擬機(jī)的限制?!?/p>

王成錄稱(chēng),方舟編譯器最理想的目標(biāo)就是“上層業(yè)務(wù)代碼不需要改,大家只需要通過(guò)華為的方舟編譯器做重新編譯就足夠了?!?/p>

他希望,Android陣營(yíng)所有合作伙伴大家一起努力,從各自場(chǎng)景、各自平臺(tái)不斷去打磨它。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 華為
    +關(guān)注

    關(guān)注

    218

    文章

    36110

    瀏覽量

    262389
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51781
  • 方舟編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

    807

原文標(biāo)題:讓華為P30運(yùn)行如飛的,是這個(gè)叫方舟的……

文章出處:【微信號(hào):smartman163,微信公眾號(hào):網(wǎng)易智能】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    性能突破 | SpacemiT-X60 在 LLVM 編譯器上實(shí)現(xiàn) 16% 顯著提升

    2025年10月,在北美RISC-V峰會(huì)上,Igalia編譯器工程師Mikhail發(fā)表專(zhuān)題演講《Unlocking15%MorePerformance
    的頭像 發(fā)表于 11-21 18:04 ?8968次閱讀
    性能突破 | SpacemiT-X60 在 LLVM <b class='flag-5'>編譯器</b>上實(shí)現(xiàn) 16% 顯著提升

    開(kāi)源鴻蒙技術(shù)大會(huì)2025丨編譯器與編程語(yǔ)言分論壇:語(yǔ)言驅(qū)動(dòng)系統(tǒng)創(chuàng)新,編譯賦能生態(tài)繁榮

    在萬(wàn)物智聯(lián)的時(shí)代背景下,操作系統(tǒng)底層能力的構(gòu)建離不開(kāi)編程語(yǔ)言與編譯器的關(guān)鍵支撐。作為開(kāi)源鴻蒙生態(tài)的核心技術(shù),語(yǔ)言設(shè)計(jì)與編譯器、虛擬機(jī)實(shí)現(xiàn)的進(jìn)步直接關(guān)系到開(kāi)發(fā)效率、運(yùn)行性能與系統(tǒng)安全。本次分論壇聚焦
    的頭像 發(fā)表于 11-20 17:24 ?1014次閱讀
    開(kāi)源鴻蒙技術(shù)大會(huì)2025丨<b class='flag-5'>編譯器</b>與編程語(yǔ)言分論壇:語(yǔ)言驅(qū)動(dòng)系統(tǒng)創(chuàng)新,<b class='flag-5'>編譯</b>賦能生態(tài)繁榮

    飛凌嵌入式ElfBoard-Vim編輯之GCC編譯器的安裝

    GCC(GNU Compiler Collection)是由GNU開(kāi)發(fā)的編程語(yǔ)言編譯器,最初是作為GNU操作系統(tǒng)的編譯器編寫(xiě)的。GCC是一個(gè)編譯器套件,包含很多軟件包,支持多種語(yǔ)言編譯
    發(fā)表于 10-15 08:44

    GCC編譯器,怎么才能實(shí)現(xiàn)c文件中未被調(diào)用的函數(shù),不會(huì)被編譯呢?

    GCC編譯器,怎么才能實(shí)現(xiàn)c文件中未被調(diào)用的函數(shù),不會(huì)被編譯?有什么編譯選項(xiàng)可以設(shè)置嗎? 移植代碼,有些函數(shù)沒(méi)被調(diào)用的函數(shù)想留在代碼里,但不想被編譯,
    發(fā)表于 09-28 12:25

    如何在Keil中將NuMicro BSP從Arm編譯器5遷移到編譯器6?

    在Keil中將NuMicro BSP從Arm編譯器5遷移到編譯器6!
    發(fā)表于 08-20 06:29

    進(jìn)迭時(shí)空同構(gòu)融合RISC-V AI CPU的Triton算子編譯器實(shí)踐

    Triton是由OpenAI開(kāi)發(fā)的一個(gè)開(kāi)源編程語(yǔ)言和編譯器,旨在簡(jiǎn)化高性能GPU內(nèi)核的編寫(xiě)。它提供了類(lèi)似Python的語(yǔ)法,并通過(guò)高級(jí)抽象降低了GPU編程的復(fù)雜性,同時(shí)保持了高性能。目前
    的頭像 發(fā)表于 07-15 09:04 ?2044次閱讀
    進(jìn)迭時(shí)空同構(gòu)融合RISC-V AI CPU的Triton算子<b class='flag-5'>編譯器</b>實(shí)踐

    邊緣設(shè)備AI部署:編譯器如何實(shí)現(xiàn)輕量化與高性能?

    電子發(fā)燒友網(wǎng)綜合報(bào)道 AI編譯器是專(zhuān)門(mén)為人工智能(AI)和機(jī)器學(xué)習(xí)(ML)模型設(shè)計(jì)的編譯器,其核心目標(biāo)是將高級(jí)的AI模型描述(如計(jì)算圖、神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu))轉(zhuǎn)換為特定硬件平臺(tái)(如CPU、GPU、FPGA
    的頭像 發(fā)表于 07-06 05:49 ?6780次閱讀

    編譯器功能安全驗(yàn)證的關(guān)鍵要素

    在汽車(chē)、工業(yè)、醫(yī)療等安全關(guān)鍵型應(yīng)用中,確保功能安全合規(guī)性需要嚴(yán)格的工具鏈驗(yàn)證。開(kāi)發(fā)安全關(guān)鍵型軟件的企業(yè)必須遵守ISO 26262、IEC 61508、ISO 62304等國(guó)際標(biāo)準(zhǔn)對(duì)編譯器工具鏈進(jìn)行全面的驗(yàn)證。
    的頭像 發(fā)表于 07-05 13:37 ?1630次閱讀

    兆松科技發(fā)布高性能RISC-V編譯器ZCC 4.0.0版本

    近日,兆松科技(武漢)有限公司(以下簡(jiǎn)稱(chēng)“兆松科技”)宣布正式發(fā)布高性能 RISC-V 編譯器 ZCC 4.0.0 版本。新版本在性能優(yōu)化、廠商自定義指令支持和軟件庫(kù)等方面實(shí)現(xiàn)全面升級(jí),并同步推出
    的頭像 發(fā)表于 06-27 14:48 ?3337次閱讀
    兆松科技發(fā)布高性能RISC-V<b class='flag-5'>編譯器</b>ZCC 4.0.0版本

    兆松科技ZCC編譯器全面支持芯來(lái)科技NA系列處理

    近日,兆松科技(武漢)有限公司(以下簡(jiǎn)稱(chēng)“兆松科技”)宣布正式發(fā)布高性能RISC-V編譯器ZCC 4.0.0版本。
    的頭像 發(fā)表于 06-11 09:56 ?1838次閱讀

    RISC-V架構(gòu)下的編譯器自動(dòng)向量化

    進(jìn)迭時(shí)空專(zhuān)注于研發(fā)基于RISC-V的高性能新AICPU,對(duì)于充分發(fā)揮CPU核的性能而言,編譯器是不可或缺的一環(huán),而在AI時(shí)代,毫無(wú)疑問(wèn)向量算力將發(fā)揮越來(lái)越重要的作用。進(jìn)迭時(shí)空非常重視RISC-V
    的頭像 發(fā)表于 06-06 16:59 ?1331次閱讀
    RISC-V架構(gòu)下的<b class='flag-5'>編譯器</b>自動(dòng)向量化

    RVCT編譯器是否比GNU的編譯器的代碼執(zhí)行速度更快?

    使用FX3S遇到了RVCT編譯器的問(wèn)題。 1、在SDK的release note中有支持RVCT的描述, 但是在EZ USB Suite的設(shè)置中沒(méi)有找到RVCT的選項(xiàng), 請(qǐng)問(wèn)支持的具體版本
    發(fā)表于 05-08 07:49

    HighTec編譯器全面支持芯馳科技車(chē)規(guī)MCU芯片E3650

    近日,HighTec與芯馳科技共同宣布HighTec編譯器套件將全面支持芯馳新一代旗艦智控MCU-E3650芯片。此次合作,進(jìn)一步豐富了芯馳車(chē)芯產(chǎn)品的工具鏈生態(tài),雙方將攜手為客戶提供高性能、高安全性的解決方案。
    的頭像 發(fā)表于 04-28 15:20 ?1878次閱讀

    TASKING編譯器全面支持紫光同芯THA6 Gen2系列產(chǎn)品

    近日,TASKING 針對(duì)Arm架構(gòu)的編譯器平臺(tái)VX-toolset for Arm迎來(lái)了全新升級(jí),最新版本VX-toolset for Arm v7.1r1已深度適配紫光同芯汽車(chē)域控芯片THA6
    的頭像 發(fā)表于 04-03 17:12 ?1403次閱讀

    HighTec編譯器全面適配紫光同芯THA6 Gen2系列產(chǎn)品

    近日,紫光同芯與全球領(lǐng)先的汽車(chē)級(jí)C/C++編譯器供應(yīng)商HighTec共同宣布,HighTec編譯器完成對(duì)紫光同芯THA6 Gen2系列產(chǎn)品的全面適配。此次合作實(shí)現(xiàn)了從指令集優(yōu)化到功能安全的全棧支持,是國(guó)產(chǎn)高端車(chē)規(guī)芯片與國(guó)際領(lǐng)先開(kāi)發(fā)工具的深度技術(shù)融合,將為全球汽車(chē)電子開(kāi)發(fā)者
    的頭像 發(fā)表于 04-02 09:42 ?1257次閱讀