自華為P30系列發(fā)布以來(lái),火了的除了手機(jī)新品本身以外,還有近日越來(lái)越“紅”的黑科技——華為方舟編譯器。
改造Android、媲美iOS、安卓手機(jī)從此不卡頓……一時(shí)間,輿論對(duì)華為方舟編譯器的渲染近乎神話。據(jù)說(shuō)自發(fā)布會(huì)結(jié)束后,華為軟件內(nèi)部團(tuán)隊(duì)的電話幾乎被打爆,很多開發(fā)者都想了解方舟編譯器的更多信息。
那么,華為方舟編譯器究竟是干嘛的?被余承東稱為“安卓性能革命”的方舟編譯器對(duì)于華為手機(jī)的戰(zhàn)略發(fā)展有何意義?對(duì)于Android陣營(yíng)以及整個(gè)產(chǎn)業(yè)又將帶來(lái)哪些影響呢?
傳統(tǒng)編譯器繞不過(guò)去的“坎兒”
首先,來(lái)看看啥是編譯器?
按照定義:編譯器是將“一種語(yǔ)言(通常為高級(jí)語(yǔ)言)”翻譯成能直接被計(jì)算機(jī)或虛擬機(jī)執(zhí)行的目標(biāo)代碼,編譯器的效率將直接影響程序運(yùn)營(yíng)性能和效率。
簡(jiǎn)單來(lái)說(shuō),編譯器就是人類和機(jī)器溝通的橋梁。比如一部手機(jī),里面的程序是由程序員使用高級(jí)語(yǔ)言開發(fā)的,當(dāng)我們要啟動(dòng)某個(gè)程序(比如打開一個(gè)APP)的過(guò)程中,編譯器扮演著“翻譯者”的角色,把高級(jí)語(yǔ)言轉(zhuǎn)換成機(jī)器能讀懂的機(jī)器碼,并按照指令運(yùn)行。
編譯器如此神通廣大,但在安卓的世界里,它卻有一道繞不過(guò)去的“坎兒”那就是VM。VM是運(yùn)行在安卓程序中的一個(gè)虛擬計(jì)算機(jī),它還帶了2個(gè)翻譯——解釋器和編譯器。當(dāng)用戶打開APP過(guò)程中,虛擬機(jī)開始運(yùn)行,為了把高級(jí)語(yǔ)言轉(zhuǎn)換成機(jī)器能聽懂的語(yǔ)言,虛擬機(jī)中有解釋器和編譯器兩個(gè)翻譯在運(yùn)行;解釋器好像現(xiàn)場(chǎng)翻譯似的,演講者講一句它就停下來(lái)翻譯一句給編譯器聽,然后編譯器結(jié)合上下文一次翻譯一大段內(nèi)容讓機(jī)器聽懂。兩個(gè)翻譯同時(shí)發(fā)聲,手機(jī)聽到的內(nèi)容只能是斷斷續(xù)續(xù),一邊翻譯一邊執(zhí)行,這也是安卓卡頓的一個(gè)重要來(lái)源。
對(duì)此,華為消費(fèi)者BG軟件部總裁王成錄指出,目前安卓系統(tǒng)主要在手機(jī)上進(jìn)行編譯,雖然谷歌一直在不斷提升原生安卓編譯器效率,比如安卓5.0版本之前安卓采用解釋執(zhí)行+JIT方式,安卓6.0開始嘗試ART虛擬機(jī),再之后采用解釋執(zhí)行+JIT+AoT綜合模式。不過(guò)為了解決安卓程序開發(fā)的兼容性問(wèn)題,ART虛擬機(jī)長(zhǎng)期存在,安卓編譯器可以通過(guò)JIT和AoT編譯大部分Java語(yǔ)言,但對(duì)于Java的動(dòng)態(tài)特性無(wú)能為力,仍然需要邊解釋邊執(zhí)行,這也導(dǎo)致了安卓系統(tǒng)流暢性下降。
四大亮點(diǎn)
從“邊翻譯邊執(zhí)行”到提前編譯機(jī)器碼
針對(duì)安卓系統(tǒng)面臨的流暢性問(wèn)題尤其是編譯器問(wèn)題,華為方舟編譯器的特性恰恰能夠繞過(guò)VM,消除虛擬機(jī)動(dòng)態(tài)編譯的額外開銷,實(shí)現(xiàn)了開發(fā)和運(yùn)行效率的兼容并舉,從“邊翻譯邊執(zhí)行”到提前編譯機(jī)器碼,直接執(zhí)行。
據(jù)王成錄介紹,華為方舟編譯器主要有以下四大亮點(diǎn):
亮點(diǎn)1.首個(gè)多語(yǔ)言聯(lián)合優(yōu)化的編譯器,消除了跨語(yǔ)言調(diào)用開銷。當(dāng)前大部分安卓應(yīng)用都涉及不同開發(fā)語(yǔ)言,不同語(yǔ)言形成的代碼需要在運(yùn)行態(tài)中進(jìn)行協(xié)同從而產(chǎn)生額外消耗,而方舟編譯器是業(yè)界首個(gè)多語(yǔ)言聯(lián)合優(yōu)化的編譯器,開發(fā)者在開發(fā)環(huán)境中可以一次性將多語(yǔ)言統(tǒng)一編譯為一套機(jī)器碼,運(yùn)行時(shí)無(wú)需產(chǎn)生跨語(yǔ)言帶來(lái)的額外消耗,并可以進(jìn)行跨語(yǔ)言的聯(lián)合優(yōu)化,提升運(yùn)行效率。
亮點(diǎn)2.程序運(yùn)行時(shí)無(wú)需依賴虛擬機(jī),減少了資源占用,同時(shí)實(shí)現(xiàn)了高效的內(nèi)存回收機(jī)制。
亮點(diǎn)3.第三,方舟編譯器可以針對(duì)不同應(yīng)用靈活編譯優(yōu)化。
亮點(diǎn)4.對(duì)于開發(fā)者學(xué)習(xí)和使用成本非常低。以上這些技術(shù)亮點(diǎn),均能給應(yīng)用開發(fā)者帶來(lái)更多優(yōu)化自己應(yīng)用的機(jī)會(huì)。
超越蘋果三星的重要加碼
用華為的話說(shuō),方舟編譯器編譯的應(yīng)用在開發(fā)階段就已完成。也就是說(shuō),只要是經(jīng)過(guò)編譯器編譯的應(yīng)用,在應(yīng)用市場(chǎng)上上架了以后,用戶下載的就是編譯過(guò)的了。
華為測(cè)試結(jié)果顯示,使用方舟編譯器最終將提升24%的系統(tǒng)操作流暢度,提升44%的系統(tǒng)響應(yīng)能力,以及提升60%的三方應(yīng)用操作流暢度,“Android系統(tǒng)將比iOS系統(tǒng)還要流暢”。這一技術(shù)將正式開源給開發(fā)者,讓所有人都可以使用方舟編譯器對(duì)應(yīng)用預(yù)編譯。
在華為看來(lái),方舟編譯器作為全新的系統(tǒng)及應(yīng)用的編譯和運(yùn)行機(jī)制,從DNA層面對(duì)安卓進(jìn)行了改造,解決了安卓應(yīng)用邊解釋邊運(yùn)行的低效問(wèn)題,讓手機(jī)能直接聽懂“高級(jí)語(yǔ)言”,可以說(shuō)是近幾年來(lái)安卓陣營(yíng)最大的根本性革新。能夠大幅降低安卓系統(tǒng)隨機(jī)卡頓的問(wèn)題,打破了人機(jī)之間的藩籬,讓用戶能直觀感受到的就是使用體驗(yàn)更加持久流暢。
筆者認(rèn)為,也許采用方舟編譯器之后安卓系統(tǒng)以及應(yīng)用將比iOS系統(tǒng)還要流暢這個(gè)說(shuō)法可能言過(guò)其實(shí),因?yàn)?a href="http://m.1cnz.cn/v/tag/4103/" target="_blank">iPhone和其搭載的iOS系統(tǒng)獨(dú)樹一幟、在系統(tǒng)流暢性方面仍然領(lǐng)先安卓。但有了方舟編譯器,安卓系統(tǒng)流暢性差、應(yīng)用開啟和運(yùn)行速度勢(shì)必將得到大幅提升,縮小與iOS的差距,華為也成為首家在系統(tǒng)層面主動(dòng)尋求顛覆式創(chuàng)新的手機(jī)廠商。
對(duì)于志在超越蘋果的華為來(lái)說(shuō),縮小安卓與iOS系統(tǒng)流暢性的差距,也將助力華為手機(jī)在超越蘋果尤其是高端市場(chǎng)更進(jìn)一步增加實(shí)力;而對(duì)于超越三星成為成全球第一手機(jī)廠商的目標(biāo)來(lái)說(shuō),雖然方舟編譯器將正式開源給開發(fā)者,使用方舟編譯器對(duì)應(yīng)用進(jìn)行預(yù)編譯的APP也可能將在其他品牌手機(jī)上適配使用,但估計(jì)華為出品的方舟編譯器應(yīng)該還是在華為自家的EMUI系統(tǒng)上更加匹配、性能才能夠得到充分發(fā)揮,因此對(duì)于旨在超越三星奪冠的華為來(lái)說(shuō),方舟編譯器也將成為其爭(zhēng)冠之路上的重要砝碼。
-
華為
+關(guān)注
關(guān)注
216文章
34687瀏覽量
253787 -
蘋果
+關(guān)注
關(guān)注
61文章
24505瀏覽量
201165 -
編譯器
+關(guān)注
關(guān)注
1文章
1645瀏覽量
49459 -
方舟編譯器
+關(guān)注
關(guān)注
0文章
60瀏覽量
276
原文標(biāo)題:媲美iOS?華為方舟編譯器真有那么玄乎嗎?
文章出處:【微信號(hào):C114-weixin,微信公眾號(hào):C114通信網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
什么樣的代碼會(huì)被編譯器優(yōu)化
Triton編譯器與GPU編程的結(jié)合應(yīng)用
Triton編譯器如何提升編程效率
Triton編譯器在高性能計(jì)算中的應(yīng)用
Triton編譯器的優(yōu)化技巧
Triton編譯器的優(yōu)勢(shì)與劣勢(shì)分析
Triton編譯器在機(jī)器學(xué)習(xí)中的應(yīng)用
Triton編譯器支持的編程語(yǔ)言
Triton編譯器與其他編譯器的比較
Triton編譯器功能介紹 Triton編譯器使用教程
C7000優(yōu)化C/C++編譯器

Keil編譯器優(yōu)化方法

評(píng)論