到底牛在哪?深挖方舟編譯器/EROFS超級文件系統

2019-08-06 大武 中關村在線
瀏覽

2019年4月11日,在上海的華為新品發布會上。余承東親自公布兩項軟件層面的“重磅炸彈”,分別是方舟編譯器和 EROFS 超級文件系統,這一時間引起了業界的熱烈討論,但也有不少人是一頭霧水。

方舟編譯器和EROFS超級文件系統究竟是什么?它們為什么能引起革命?下面就讓我們帶著疑問去解讀。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

01華為方舟編譯器安卓性能革命

編譯器是什么?

簡單來說,編譯器就是把編程人員開發的高級語言程序,翻譯成機器可執行的機器指令,這就是編譯器。它就像一位翻譯官,是連接程序員與機器的橋梁。由此來看,方舟編譯器面向的是開發者,但最終會回饋于用戶身上。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統

在了解方舟編譯器之前,我們必須得首先了解 Android 操作系統中的編譯器的運行機制當前 Android 平臺的絕大多數應用是使用 Java 語言寫的,CPU 只能理解匯編指令,無法直接識別 Java 語言的虛擬機指令。

在 Android 平臺上,代碼編譯經歷了數個階段。在 Android 5.0 正式采用 ART 之前,Android 采用的是解釋執行+JIT 的方式執行 Java 代碼。在這個階段的系統是“邊解釋邊執行”模式,代碼效率比較低下,當時Android給人的感覺就是卡。

在 Android 5.0至Android 6.0 階段,Google推出了ART來解決之前的 Java 代碼執行效率問題。這個階段采用的是完全AOT模式,但隨即又帶來另個兩個問題,安裝應用慢和占用內存空間。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

隨后一直發展到現在,目前的Android采用的是解釋執行+JIT+AOT 的模式,但并沒有擺脫一個前提,即應用在被打包成APK的時候,采用的還是Java代碼。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

小結:總之現在Android系統有一個繞不過去的坎,即為虛擬機(Virtual Machine,簡稱 VM),它包含翻譯器和編譯器,其目的就是把 Java 高級語言轉換成機器能懂的語言,也就是因為這一轉換過程導致了Android的卡頓現象。

反觀蘋果的iOS系統,直接使用Clang/LLVM來編譯出機器碼,就沒有安卓還要一個中間層那么麻煩,也因為如此,所以我們感覺iOS系統一般更流暢,雖然這只是原因之一。

方舟編譯器牛在哪? 它繞過了虛擬機

從華為官方得知,其5年前就已經開始布局編譯器技術,聘請了世界頂級的編譯專家,投入了數百人專家團隊才攻克了編譯器技術,然后在EMUI 9.1上實現了機器代碼的翻譯。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

從Android操作系統的代碼運行邏輯我們得知,華為編譯器最大的優勢在于它繞過了虛擬機。簡單來說,方舟編譯器可以將高級語言(Java)直接變成機器碼,無需再通過 Android 系統中內置的編譯器。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

總之,方舟編譯器是完全替代了語言虛擬機的靜態編譯器,從此不再需要解釋器。相比現有的編譯機制有以下明顯優勢:

1、方舟編譯器是一種靜態的編譯方式,而現有的安卓系統,運行一個應用程序首先啟動虛擬機,然后讀入應用代碼逐條解釋執行,無法做到100%做到擺脫虛擬機,這也是當前安卓陣營面臨的問題。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

方舟編譯器編譯的應用在開發階段就已完成,簡單理解,只要是經過編譯器編譯的應用,在應用市場上架以后,用戶下載的APK 就是編譯好的了。

2、華為方舟編譯器的靜態編譯方式可將語言里的動態特性直接翻譯成機器碼,手機安裝應用程序后可全速運行程序,徹底干掉了虛擬機,極大提升了系統運行效率。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

方舟編譯器對于系統在這方面的提升,官方描述說:

第一點,EMUI 9.1對系統主要服務System Server進行靜態編譯化,帶來了系統流暢度提升24%,系統響應性能提升44%以上的收益。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發) 實測微博極速版加載速度對比,榮耀9X PRO明顯加載更快

第二點,微博極速版實現了靜態化編譯后,流暢度提升高達60%。

方舟編譯器還帶來新的垃圾回收機制

此外,方舟編譯器還帶來了新的系統垃圾回收機制。以往安卓的垃圾回收機制是集中回收,由于Java虛擬機的特點,系統會不斷地對內存進行標記。永不停歇地自動回收內存垃圾,保證內存不會溢出是Java的一大特點。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

可用內存低于某個標準值后,它就會自動關閉優先級低的進程。一旦被觸發應用緊接著就被系統殺掉,隨機造成莫名的卡頓。比如,啟動游戲時,點按app進入前感覺莫名的卡頓,界面像是抽搐了一下。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

而方舟編譯器做了什么改變呢?它的內存回收機制是隨用隨回收,夠佛性吧!回收時不需要暫停應用而回收內存垃圾,這大大提高了系統運行速度。

方舟編譯器將對外開源

華為方面已經表示,方舟編譯器也將開放給第三方合作伙伴。其表示后續會在 2019 年 11 月的綠盟開發者大會實現完整方舟編譯器代碼開源,讓廣大的應用開發者、手機廠商加入進來,共同構建開發者生態,使安卓體系做得更強大。

未來方舟編譯器是否能成功,還要看后續完整生態的搭建。希望開發者積極參與進來,最終給消費者帶來更為極致的體驗。

02EROFS超級文件系統隨機讀取再提速

4K固定壓縮輸出 節省內存,提升速度

2016年搭載EMUI 5.0的華為Mate 9,首次在業界規模商用F2FS文件系統,替代了傳統的EXT4文件系統,令用戶分區的文件讀寫流暢度提升20%。這次,為了驗證EROFS超級文件系統在隨機讀取性能上的再次提升,我們用AndroBench來測試

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發) 左為某驍龍855旗艦手機 右為某麒麟810手機

從測試結果來看,搭載麒麟810的機型,得益于EROFS超級文件系統的加持,在連續讀取(902.39MB/S)和4K隨機寫入(232.58MB/S)都要明顯高于搭載驍龍855旗艦的機型,其他像連續寫入和隨機4K讀取兩者相差不大。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

EROFS超級文件系統通過高效的壓縮算法加持,帶來隨機讀性能提升,EROFS的做法是保證每次壓縮一塊,正好是一個固定大小的存儲塊。這樣幾乎沒有浪費,不僅性能提升隨機讀性能的20%,ROM空間還節約了2GB。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

以華為P30 Pro 128G為例,系統初始空間相比Ext4節省2GB,相當于用戶可以多存1000張照片或500首歌曲。而且體現在,系統升級上同樣能夠省時。官方表示,采用EROFS后,升級包大小下降約5%-10%,升級時間縮短約20%。

EROFS是天然只讀 更安全

為了避免系統分區被篡改,Android將系統分區設置成只讀的。Ext4是一個讀寫雙向的文件系統,為了防止讀寫系統區,要加兩把鎖才能更安全。這兩把鎖加上,這個機制就變得更復雜了。

到底牛在哪?深挖方舟編譯器/EROFS超級文件系統(不發)

這解決這個問題,EROFS超級文件系統是天然只讀設計,系統分區不可被三方改寫。因為一旦系統區被寫就意味著系統被攻破了,所有運行管理保證它的正確性,所以不能被改寫意味著更安全。這就相當于筑起了一道防火墻,系統分區變得更加安全了。

寫在最后

十年磨一劍,華為能取得今日的突破并非一日之寒。從方舟編譯器和EROFS超級文件系統這里我們就能看出華為對研發的投入,以及對生態的規劃,并不只是說說而已,華為的終極目標或許是全方位的生態搭建。

方舟編譯器和EROFS超級文件系統就是這生態搭建過程中的一步體現,我們期待未來這兩項技術能夠普及開來,促進Android體系更加強大,也希望華為能在未來帶給我們更多驚喜。

榮耀9X(4GB/64GB/全網通) 前后超級夜景,側邊指紋解鎖,方舟編輯器,EROFS超級文件系統

榮耀9X(4GB/64GB/全網通) 前后超級夜景,側邊指紋解鎖,方舟編輯器,EROFS超級文件系統

[經銷商]京東商城

[產品售價]1399元