華為方舟編譯器將開源,安卓手機卡頓能被解決了嗎?
記者 | 唐健博
編輯 |
1
在P30系列手機上海釋出會上,餘承東公佈了華為在系統方面兩項研發成果——超級檔案系統EROFS和華為方舟編譯器。在會上,餘承東稱,採用EROFS的系統能讓隨機讀效能提高20%,系統空間節省14%;而應用方舟編譯器後,系統操作流暢度提高了24%以上。
Android系統長時間使用之後便會卡頓,這一問題一直被使用者詬病。華為所釋出的兩項技術便是朝著解決該問題去的。華為方面稱,在當天方舟編譯器釋出之後,華為OpenLab(開放實驗室)的電話就被打爆了,許多開發者都想了解方舟編譯器更多資訊。
事實上,不僅是開發者對該技術感興趣,部分極客使用者同樣十分關注Android系統的流暢度能否因此得到提升。
超級檔案系統EROFS是什麼?
在Android系統底層,傳統的檔案系統是EXT4(Fourth extended filesystem,第四代擴充套件檔案系統),原本適合機械硬碟,它支援系統雙向讀寫。在壓縮過程中,檔案塊是定長輸入,磁碟塊變長輸出。好比3噸的串號檔案交給2噸的貨車運輸,其中1噸只能交給下一輛車,但讀取時則必須把兩輛車合起來才能工作,直接導致讀取效率降低。
在系統長時間使用之後,會殘留許多資料碎片。隨著碎片垃圾增多,對於系統執行的影響就會變大。EXT4對於碎片垃圾的清理能力上較弱,因此會出現時間長之後手機卡頓的情況。
事實上,Google也做過相應的努力,曾經推出過SquashFS,一套供Linux核心使用的GPL開源只讀壓縮檔案系統。但後來應用到系統上之後效果差強人意,最終撤掉了。
華為CBG軟體部總裁王成錄在最近一次交流會上表示,EMUI 9.1所採用的檔案系統EROFS(Extendable Read-Only File System,可擴充套件的只讀檔案系統)便是旨在解決系統分割槽檔案儲存與管理問題。其核心在於通過檔案系統的只讀屬性,保證系統分割槽一直保持初始化的檔案,除了系統更新之外,禁止被寫入其它東西。以此保護了系統的安全性。
在壓縮演算法上,EROFS的檔案塊是變長輸入,磁碟塊定長輸出。若還按照貨車運輸的例子來打比方,就是壓縮3噸的檔案交給3噸的貨車,每一輛貨車都滿載出發。但事實上,EROFS採用了fixed-sized output檔案壓縮演算法,壓縮後的物理塊大小為固定值(4k),每一個數據包都是4k。
華為稱,EROFS的專利壓縮演算法幾乎不存在無效讀取,其隨機讀效能平均能提升20%,且系統空間相比 EXT4節省2GB(P30 Pro 128GB為目標物件)。升級包大小下降約5%-10%,升級時間縮短了約20%。
“EROFS檔案系統已經開源了,Linux下一個4.19版本就會用這個檔案系統。”王成錄博士說道,“業界內用Linux新核心版本的廠家都可能用到這個檔案系統。這也是國內廠商第一次貢獻完整的檔案系統到Linux主線版本。”
方舟編譯器能做什麼?
首先我們要知道,所有機器程式都有自己的語言,和全世界講的語種類似。編譯器便是把程式設計人員開發的高階語言程式,翻譯成機器可識別的指令,翻譯的效率將直接影響機器執行指令的效率。
“由於Android的開放性,上層應用沒有強制規則。比如Android的第三方應用市場非常多;Android的安裝方式也非常多,通過郵件都可以安裝。帶來的(不穩定性)問題比較多。所以Android使用者要真正能夠獲得好的體驗,手機廠家只把手機做好是不夠的。”王成錄博士說起了目前Android軟體生態的問題。
由於這個生態無法像iOS生態那樣高度標準化,因此軟體存在各種編譯方式,甚至是層次不齊的軟體質量。方舟編譯器的意義在於通過手機廠家和生態的合作,把使用者軟體體驗做好。
方舟編譯器所採用的翻譯方法,與此前的編譯器有所不同。
現有的Android系統是在手機環境中進行編譯,通過ART虛擬機器(Android Runtime)一邊翻譯一邊執行,這會造成資源佔用過多,進而影響到程式執行的效率。
方舟編譯器則能讓開發者在開發過程中直接把多種高階語言編譯為機器可識別的指令,然後打包成APK,手機在安裝程式之後便可直接識別並執行程式。從而提高軟體的執行效率。
王成錄博士介紹說,方舟編譯器總共有4個技術亮點:
- 首個多語言聯合優化編譯器,可消除跨語言呼叫開銷;
- 程式執行無需依賴虛擬機器,記憶體回收機制高效;
- 可針對不同應用靈活優化;
- 開發者學習和使用成本低。
其中第二點對於使用者來說,系統的執行改善是直觀的。由於沒有了ART虛擬機器佔用系統資源,且不用虛擬機器編譯過程,程式的執行效率將會得到提高。同時,由於方舟編譯器在編譯時為程式配備了及時回收的記憶體處理機制,相較於之前系統需要全域性暫停才能回收資源的方式,系統在執行的流暢度上得到了提升。
餘承東曾在P30系列釋出會上表示,新浪微博極速版在應用方舟編譯器之後,操作流暢度提升了60%以上。
不過顯然通過華為一家廠商是做不到全部軟體的覆蓋的。王成錄博士表示:“實際上這件事情,只靠華為一家不可能實現,我們非常希望Android陣營所有合作伙伴大家一起努力。這次方舟編譯器我們承諾要跟業界開源最核心的原因,是希望大家從各自場景各自平臺去應用,讓Android手機體驗越來越好。”
什麼時候能用上?
目前EROFS檔案系統已經隨著EMUI 9.1系統面世,華為P30系列手機已經搭載該檔案系統。
事實上,華為對Android系統底層的改動,3年前就有所體現了。不過那時候針對的是Android系統的使用者分割槽,而EROFS檔案系統針對的是系統分割槽。
2016年華為P9從EXT4變成了F2FS檔案系統。“F2FS本身是為Flash快閃記憶體專門定製的檔案系統。經過多輪的技術驗證,我們最終把F2FS用在EMUI 5.0上,發現上手機的碎片減少了非常多,對系統的流暢性貢獻很大。”王成錄博士說道,“後來Google將F2FS吸收到了社群,Google的手機(Nexus系列)也採用了這個系統。”
由於方舟編譯器需要各方開發者的共同努力,使用者想要體驗到方舟編譯器所做的軟體,還需要耐心等待。華為表示在P30系列釋出會上宣佈開源之後,今年將會在11月份的綠盟開發者大會上開源完整的方舟編譯器程式碼。