方舟編譯器,華為的暗渡陳倉

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

最近幾天,華為的Mate20,V20等產品先後更新了方舟編譯器,按照華為的說法,方舟編譯器可讓系統操作流暢度提升24%,系統響應速度提升44%,第三方應用重新編譯後流暢度可提升60%。

而且華為從多個方面優化了系統。

去年,華為的GPU turbo技驚四座,如今又搞出方舟編譯器,華為意欲何為呢?

一、 安卓為什麼慢?

關於安卓慢的問題,從2008年安卓一問世就有人提了。

安卓是在Linux系統上的一個Java虛擬機。

代碼是Java寫得,這讓安卓早期具有非常好的兼容性。

所以後來能有X86安卓。

同時,用Java語言編程,非常有利於開發者遷移到安卓平台,因為在安卓之前,很多功能手機都是支持Java的,手機程序的開發者都用Java,這是谷歌為了普及安卓做的選擇。

但是,兼容和普及是有代價的,這就是速度。

安卓早期版本用的是解釋執行加上編譯執行,編譯用的JIT(Just in time)模式,這個效率是巨慢的,所以安卓早期效率很低。

在 Android 5.0後正式採用 ART (Android Runtime)來解決之前的Java 代碼執行效率問題。

系統會把所有Java代碼提前編譯為機器碼,提升執行效率。

但是,這種模式安裝速度慢、占用磁碟空間大。

Android 7.0後,Google做了很大的改進,安裝的時候,還是解釋執行,編譯用的JIT(Just in time)模式。

這樣安裝速度快,而你使用以後知道你常用什麼了,再利用空閒的時候預先編譯。

Android 8.0,谷歌改進了解釋器,解釋模式執行效率大幅提升。

Android 10.0上提供了預先放置熱點代碼的方式,應用在安裝的時候就能知道常用代碼會被提前編譯。

就是說,現在谷歌的安卓已經經過很多次改進,在安裝速度、執行速度上有了很好的平衡。

安卓雖然還慢,但是相比以前已經有了巨大的進步。

二、方舟編譯器要做什麼?

華為發現,現在95%的程序,為了效率,都是C++和Java混合開發的。

然後Java代碼在通過安卓的虛擬機變成機器碼,而C++的代碼直接變成機器碼。

於是,華為推出方舟編譯器,不管你用什麼語言,Java也好,C++也好,直接用我的編譯器編譯成機器碼。

更可怕的是,華為搞了自己一套Runtime,用方舟編譯了以後,直接連過去。

這樣華為脫離安卓的限制,做很高程度的優化。

用戶如果還在安卓限制中,全部執行機器碼,優化程度也離不開安卓。

而華為做底層,同樣給安卓開發的程序,經過華為方舟編譯器的編譯,連接到華為底層的Runtime,就可以優化到非常快。

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

三、 暗渡陳倉

從明面上看,華為搞這個方舟編譯器,是為了優化華為手機的速度,大家都用ARM公版,華為怎麼能更快一點呢?搞底層的Runtime和編譯器,一樣給安卓開發的程序,用我的編譯器,連接我的Runtime,打包成機器碼下載,速度就快了。

但是,這意味著安卓的分裂,經過華為方舟編譯器編譯出來的機器碼,其他手機不能用!

就是說,一個公司開發一套安卓APP,讓所有手機都能用是一個編譯,用華為的方舟編譯器便於出來,就只能華為用,而且速度比通用編譯的更快。

這就很可怕了,如果有一天,華為和谷歌鬧翻,不用安卓了,只要華為這個編譯器在,用戶給谷歌開發的程序,一編譯,就可以給華為的手機用。

那華為就不需要谷歌了,安卓的生態系統直接拿來用就行了,而且速度比谷歌的更快。

這才是華為搞編譯器的終極目的,明修棧道,暗渡陳倉。

特別聲明:本文為DoNews簽約作者原創,文章版權歸原作者及原出處所有。

轉載請聯繫DoNews專欄獲取授權。


請為這篇文章評分?


相關文章 

華為的方舟編譯器到底是什麼,很牛逼嗎?

前一陣子,華為P30系列發布,最為明顯的升級就是相機拍照部分,外加上P20打下的基礎,突破了自己,就算是突破了整個行業,然而從長遠的眼光看,華為P30的發布帶來的拍照提升只是例行升級,真正懂行的...