安卓流暢性直逼蘋果iOS?華為開源方舟編譯器!

文章推薦指數: 80 %
投票人數:10人

文/極客修小編

在昨兒個的華為P30國行發布會上,華為正式公布了售價,具體看圖


配置方面,兩款手機不再具體陳述,感興趣請參考我們之前的推文

華為P30終於來了!50倍望遠鏡+夜視儀,蘋果慌了!

今天我們來聊聊會上宣布推出的「方舟編譯器」


方舟?根據《聖經》的傳說,方舟意味著重生

那麼這個方舟編譯器是什麼呢

根據官方描述,方舟編譯器通過架構級優化,顯著提升性能

尤其是全程執行機器碼,高效運行應用,徹底解決安卓應用「邊解釋邊執行」造成的低效率


同時也給出了具體的數字

系統操作流暢度提升24%,系統響應速度提升44%,第三方應用重新編譯後流暢度可提升60%

如此來看,方舟編譯器倒是大有方舟的意味呢

更重要的是!這艘方舟全世界人民都可以乘!

華為宣布,方舟編譯器面向業界開源,首先面對國內開放,而後會逐漸推行到海外

最後CEO余承東也呼籲APP開發商、開發者儘快使用,可以帶來煥然一新的體驗

華為這可真是心繫天下呀


我們今天便從系統編程角度淺析下,方舟編譯器到底有沒有那麼神奇呢

首先,對於華為所述的安卓系統「邊解釋邊執行」,這點其實有點誇大事實的嫌疑

什麼叫做邊解釋邊執行呢。

眾所周知,安卓系統基於Linux開發,使用的是Java語言

但是,基於Java代碼寫的安卓軟體,CPU是不能直接理解裡邊的代碼執行的

這時候便需要通過Java的虛擬機,將Java的語句解析成字節碼,然後再整合成CPU所能理解的指令

解釋器一邊解釋,CPU一邊執行,這便是所謂的解釋執行

你可能會好奇,何必這麼麻煩


當然,安卓想要跑程序還有另一種更簡便的方法

就是將Java語言直接翻譯成機器語言,專業點叫做本地機器碼(native code)

而翻譯又存在兩種方式,一種叫做AOT編譯,一種則是JIT編譯

首先是AOT(Ahead of time),預先編譯,顧名思義

將解析好的字節碼重新編譯,變成CPU能夠理解的機器碼


形象地說,相當於在你看電影前製作好的中英文台詞

另一種則是JIT(Just in time),即時編譯器,在軟體運行後,一邊翻譯,一邊執行

這就等於你看電影時,下方滾動出現的中英文字幕


在安卓5.0以前,或者說安卓4.4之前,安卓默認使用的是Dalvik虛擬機,這時候是不存在AOT的

而這個時候的安卓妥妥的就是華為說的「邊解釋邊執行」,通過解釋執行+JIT來運行Java代碼

但在安卓5.0,系統虛擬機換成了ART(Android run time),採用的是完全的AOT

應用在第一次安裝的時候,字節碼就會預先編譯成機器碼,因此提高了機器的運行效率


所以,這個時候JIT被放棄了

這就相當於你已經把電影看了好幾遍,你都已經知道他下一句要說啥了,還需要啥字幕

但是到了安卓7.0,谷歌又把同步字幕引入了

為了解決ART帶來的軟體安裝速度慢的問題,谷歌又決定不再將整個軟體編譯


而是接著做解析執行,將Java代碼解析成字節碼,交給虛擬器運行

但編譯還是得編譯啊,不然效率多低,於是同步字幕又回歸到了我們的視野

同時,系統還要做另一件事,那就是在空閒的時候,將字節碼進行分析

篩選出那些經常使用的字節碼,或者叫「熱代碼」,然後對其進行編譯,變成機器碼儲存在機器上


這個過程依然叫做AOT,不過應該叫做All Of the Time,全時間段編譯

這樣一來,經過你對軟體的多次打開,系統分析出熱代碼,以後你開啟應用的時間自然得到了縮短

非要做個比喻的話,大概就是對電影進行精華片段混剪,並配上相應的字幕

因此,如今的安卓根本不能稱之為「邊解釋邊執行」,而是解釋運行+AOT+JIT的綜合


華為這種過度誇大安卓弊端的做法確實值得商榷

而華為的方舟編譯器到底又是什麼呢

首先我們排除類似安卓5.0和6.0時代的ART策略,在這種方式下,進行全局軟體的odex化

既增加開機時間,又增加了應用的安裝時間和體積,這種已被谷歌拋棄的策略,華為自然不會新瓶裝舊酒

那麼這個所謂革命性的突破到底是怎麼實現的呢

根據極客君的分析,在發布會上,余承東呼籲APP開發者加入,將應用程式重新編譯一下,不需要重新開發

這句話根據我的理解,大概意思就是

只要你們用我們的編譯器,將APP重新打包成apk安裝文件,便能實現性能提升和改善


所以,根據我的猜測,方舟編輯器大機率是一個類似開發工具的東東

能夠實現,將apk文件中的Java語言直接轉換成機器碼,而這些,在軟體安裝之前便已完成

這也就是說,只要用戶安裝經過方舟編譯器「改造」過的軟體,便能實現其宣稱的各類流暢度提升

而目前的安卓,編譯都是在機器內實現的

這就相當於給你裝了個同聲翻譯機,這下連字幕都不需要


而華為是如何實現統一編譯的呢,這點不得而知

至於編譯後代碼的兼容性,目前也沒有具體測試

但細思極恐,極客君想起了曾經的一條新聞


余承東承認,華為有自研系統,如果無法使用安卓系統,華為將啟用備用系統

而從方舟編譯器來看,或許,那一切都是真的

極客修,值得信賴的手機快修平台!


請為這篇文章評分?


相關文章 

華為方舟編譯器公布:號稱安卓革命性突破!

今天下午(4月11日),華為在上海舉行新品發布會,正式發布國行P30系列新機。在發布會上,華為消費者業務總裁余承東正式公布了「方舟編譯器」,號稱安卓的革命性突破。按照余承東的說法,現有安卓系統存...