如何評價華為方舟編譯器?華為官方的答案來了~_風聞
打酱油的星际菜鸟-观察者网编辑-观察科技、数码和游戏2019-04-25 18:30
華為上海春季發佈會,最令人關注的除了手機(啊畢竟是個手機發佈會)外,就是華為開發的開源編譯器方舟編譯器了。那麼,方舟編譯器的原理是什麼,如何做到加快運行流暢度和減少內存佔用這些功能呢?今天(4月25日)上午,知乎機構號“華為終端”正經的回答了這個問題。
以下內容轉載自知乎。作者:華為終端。
原文鏈接:https://www.zhihu.com/question/319688167/answer/661413209
來源:知乎 著作權歸作者所有。
謝邀。
方舟編譯器雖然是在 4.11 日 HUAWEI P30 系列國內發佈會上公佈的應用編譯技術,但其實華為早在 5 年前就開始佈局,並投入數百專家團隊,歷經多次嘗試,才在 EMUI 9.1 上實現了機器代碼的翻譯。
**首先,什麼是編譯技術?**幾千年來,人們從裹腹耐寒到智慧創新,從未停止探索世界的步伐。同時,他們將這些智慧賦予更多的物體,比如機器。
想讓機器讀懂人類情感,他們之間就需要有個“翻譯”,來充當人機交互的橋樑,也就是專業人士口中的編譯技術。

它能夠將 C、Java 等高級語言轉換為機器能讀懂的低級語言,將精妙的代碼轉化為 0 和 1 的二進制指令,消除了溝通障礙,從而馴服了機器。
可以説編譯器是軟件與芯片之間的橋樑,其性能,效率直接影響到機器的運行效率。
方舟編譯器和 Java 不得不説的故事
而既有的安卓系統框架與應用之間,仍然使用的是不被機器直接讀懂的 Java 語義,最初的解決方案是通過增加一個虛擬機制(JVM),相當於一個“中間層”將 Java 語言“翻譯”為機器可以讀懂的彙編指令。
“中間層”翻譯一句 Java 語義機器就執行一段,也就是“邊解釋邊運行”(動態編譯),不但效率低,耗費系統資源,對操作流暢度也有影響。
儘管安卓系統 6.0 以後採用了 ART (Android Runtime)模式,對調用次數多的 Java 代碼編譯為機器碼(靜態編譯);在設備空閒的時候進行一些預編譯,解決了部分 Java 代碼執行效率問題,但對於動態語義部分還是無法實現靜態編譯,仍需要虛擬機充當“翻譯”邊解釋邊運行,效率和體驗提升有限。
而方舟編譯器,採用了全新的系統及應用的編譯和運行機制,對所有的 Java 語義全部做到靜態編譯,直接將 Java 語言“翻譯”成機器語言(靜態編譯),消除了虛擬機動態編譯的額外開銷,實現了開發和運行效率的兼容並舉。
如果把編譯器看做一個翻譯,就好比我們去到一個語言不通的國家,原本只能通過同聲翻譯(虛擬機)來進行交流溝通,難免效率低下。而華為方舟編譯器更像是讓您直接獲得了語言能力,從而可以擺脱同聲翻譯(虛擬機),可以更暢快地與當地人溝通。

根據華為實驗室的測試數據,EMUI 9.1 在僅僅對系統組件 System Server 應用了華為方舟編譯器後,系統操作流暢度提升 24%,系統響應性能提升 44%。同時,新浪微博極速版在應用方舟編譯器之後,操作流暢度最高提升了60%。[[1]](https://www.zhihu.com/question/319688167/answer/661413209)

方舟編譯器編譯的應用在開發階段就已完成。也就是説,只要是經過編譯器編譯的應用,在應用市場上上架了以後,用户下載的就是編譯過的了。
説了這麼多,看個視頻,一分鐘瞭解一下華為方舟編譯器吧!
一分鐘瞭解一下華為方舟編譯器
綜上所述,方舟編譯器作為全新的系統及應用的編譯和運行機制,從 DNA 層面對安卓進行了改造,打破了性能和功耗的的蹺蹺板,解決了安卓應用變解釋邊運行的低效問題,讓手機能直接聽懂“高級語言”,可以説是近幾年來安卓陣營最大的根本性革新。它解決了安卓系統久用必卡頓的魔咒,打破了人機之間的藩籬,讓用户能直觀感受到的就是:
1、 提升了應用的流暢度;
2、 降低手機 CPU 的開銷;
3、 進一步降低功耗提升了手機續航能力;
4、 為用户帶來更加持久流暢的體驗。
發佈會上餘總也表示方舟編譯器將會在 EMUI 後續的版本開發中運用到更多模塊中,並且面向業界全面開源,更多開發者可參與到方舟編譯器的開發、使用中。那麼方舟編譯器的效果究竟如何,我們拭目以待吧!
轉載完畢。
總的來説,方舟編譯器繞過了安卓的JVM機制,可以説是對安卓系統的深度定製了。不過這樣的編譯方式帶來的問題是,在非華為機型上可能出現兼容性問題。除此以外,谷歌對於華為這種操作的態度也是個問題。目前來看谷歌應該處於“你先弄着我看着”的狀態,未來會如何,還需要繼續觀察。
不過我們消費者管這些幹啥呢?運行更流暢,用着更開心就夠了~現在需要期待的,就是什麼時候華為能把EMUI9.1適配到P30系列以外的機型,改善老用户們的體驗了。