當前位置:
首頁 > 科技 > 除了鴻蒙OS,你別忘了華為這項秘密武器

除了鴻蒙OS,你別忘了華為這項秘密武器

前兩天,萬眾期待的鴻蒙 OS,終於在華為開發者大會上與世人見面了。

畢竟等待了這麼久,千呼萬喚始出來,大家對它都抱有 12 分的關注。

可機哥發現……

就在同一場發布會,還有個重磅程度不亞於鴻蒙 OS 的狠角色,卻被很多人忽略。

在機哥看來,它對華為系統生態的發展,具有極其重大的戰略意義。

而且當下對用戶的影響甚至超過鴻蒙。

不賣關子,它就是——

方舟編譯器

自打今年四月華為第一次對外宣布方舟編譯器以來,大家總是能在各種場合聽到這東西。

但絕大多數人並不了解它到底是個啥。

機哥用儘可能大白話的方式給大家科普一下。

故事的開端要從安卓的老難題說起:

安卓的老難題

一直到現在,機哥還經常聽到有人在選購手機的時候說:

「買安卓?不行不行,太卡了,我還是用蘋果吧。」

以機哥多年的搞機經驗來看,這句話絕對不是子虛烏有的污衊,「卡頓」確實是困擾安卓好多年的難題。

特別是安卓 5.0 之前的版本,手機剛買來時還湊合,用的時間一久……

便出現滑動不流暢、掉幀。

應用啟動載入慢就算了,有時候還假死。

每每看到程序未響應,都讓我回憶起曾經被 Windows 支配的恐懼。

安卓為什麼會這樣呢?

原因有很多方面,機哥人認為最大的問題有三個。

作為六號線最會說人話的科技宅,機哥就不扯那些專業的術語,咱們打一個通俗易懂的比方來說明:

假設今天機哥想讀一本書,嗯,一本世界名著。

只不過,它是全英文的。

這時候機哥遇到了第一個問題:

我是個英語文盲,要想看懂這本書,該怎麼辦?

很簡單,請一名翻譯。

只要翻譯對著書,逐字逐句翻譯成中文給我聽,我就能懂了。

但是,速度很慢。

很快,機哥遇到了第二個問題:

這本名著里除了英文,偶爾還會出現其他語言,比如法語。

我的英語翻譯不懂法語,讀到這裡就卡住了,怎麼辦呢?

辦法是這樣的,這名英語翻譯有個懂法語的朋友,他打電話詢問了那個朋友,幫忙翻譯。

恩,雖然最後我聽懂了,但效率真的很低。

最後,還有第三個問題:

我會疲勞。

一次性聽了幾個章節後,累了咋辦。

那隻能停下來休息一會兒唄。

這樣,我們又耽擱了一點時間。

注意,下面重點來了,我們把上面這個故事的要素替換一下:

英語=安卓的基礎語言 Java;

中文=機器能懂的語言;

機哥=機器;

翻譯=把 Java 翻譯成機器語言的「解釋器」;

法語=其他編程語言;

疲勞=內存資源不夠用。

這個故事也就解釋了安卓手機卡頓的三大原因:

首先是手機 CPU 聽不懂 Java 語言,需要虛擬機的「解釋器」,把 Java 位元組碼翻譯成機器語言來運行,速度很慢。

其次是 Java 原生介面需要和 C/C 等其他語言的代碼進行交互,造成額外的 JNI 開銷,拖垮了效率。

最後是當內存不夠用時,安卓虛擬機會採取 GC 內存回收機制,導致機器卡頓。

這麼一說,安卓這是一身毛病啊,谷歌就沒想過改善一下嗎?

事實上,他們做了不少努力。

谷歌為了解決卡頓曾經做過的事

機哥上面說了,安卓的虛擬機機制,需要把 Java 語言,翻譯一道才能給機器運行。

效率低下不說,還特別吃硬體。

谷歌早就意識到這個問題,在 Android 2.2 中加入了一種叫做 JIT 的機制。

JIT 意思是即時編譯(Just in Time)。

放到機哥舉的例子中就是:翻譯者不再逐字逐句翻譯,每次閱讀的時候,他會把這個章節中的常見單詞教會機哥。

有了這樣的基礎,我的閱讀效率提高了不少。

但提升很有限。

於是從 Android 5.0 版本開始,谷歌又引入了一種叫做 AOT 的新機制。

AOT 意思是提前編譯(Ahead of Time)。

相當於在機哥開始閱讀這本書之前,翻譯把這本書里的所有單詞都先教給機哥了。

這解決了機哥閱讀速度慢的問題,但又帶來了新的問題。

閱讀之前,教單詞費時間啊。

對應到手機中,就是每次安裝一個應用、升級一個應用速度奇慢無比。

大家應該都記得當初安卓 5.0、6.0 那會兒,系統升個級,一堆應用排隊優化,速度有多慢吧。

所以到了 Android 7.0,谷歌把上面這些方法全都結合在了一起。

JIT AOT 解釋器。

運行的時候進行 JIT,並把編譯好的機器碼保存下來。

機器空閑的時候進行 AOT,如果兩者都來不及,那再使用解釋器。

所以,如今新版本的安卓,再也不會像以前那樣卡頓。

到這裡,安卓的運行模式達到了一個很好的平衡…………嗎?

然而並沒有,無論谷歌怎麼改進,虛擬機、解釋器對硬體的佔用依然存在。

這之中還有可以提升的餘地。

於是,華為出手了。

華為是怎麼做的

華為思考問題的方式,果然是簡單直接而有效。

我們把問題拉回到最開始。

當機哥拿起那本英文世界名著,一籌莫展的時候。

怎麼就沒想到……買一本中文翻譯版呢?

如果這本書早就被翻譯成了全中文,我為什麼還要找翻譯、學英語、問法語呢?

這可以節省多少資源和時間啊。

華為的解決方案正是如此,方舟編譯器所做的,相當於把英文名著,翻譯成中文譯本的工作。

也就是說,在應用打包 APK 的時候,就把 Java 代碼編譯成了機器碼。

說著簡單,真正要實現起來其實困難重重。

要將 Java 語言直接編譯成機器碼,不僅僅要編譯靜態語義,還要能編譯千變萬化的動態語義。

這之中的難度非常巨大,畢竟安卓花了十幾年都沒能徹底解決。

你要說被華為輕輕鬆鬆就搞定了?那實在有點傲慢。

實際上華為為了攻克這個難關,做了很多艱苦卓絕的工作。

從 2009 年就開始布局,期間投入了大量人力物力。

方舟編譯器團隊遍歷了 Java 的動態語義,做了大量的數據建模,設計了具有核心專利的動態語義匹配機制。

還實現了混合語言的統一 IR(中間語言),有效避免多餘的 JNI 開銷。

順便引入計數法(Reference Counting)來進行內存回收,解決了安卓 GC 回收機制的弊端。

最後的結果就是,操作系統的流暢度提升 24%,系統響應性能提升 44%。

經方舟編譯的第三方 App,操作流暢度甚至能提升 60%。

光說不練假把式,華為說提升 60% 就 60% 了?

機哥拿第一批使用上方舟編譯器的 App 微博極速版,實測試試。

咱們直接把難度拉到最高,點開華為官方微博的相冊,測試短時間載入大量圖片的速度。

PK 的對象,挑一台人們心目中流暢度的標杆——iPhone XS Max,來看看到底是誰更勝一籌。

左:iPhone XS Max │ 右:P30 Pro

額……沒想到左邊的 iPhone 根本追不上右邊的 P30 Pro 啊……

根據華為公布的消息,除了微博極速版,下面這 40 多個 Top 應用,都會迅速跟進,推出方舟編譯版本的 App。

細想下來,方舟編譯器可謂是華為在自己的系統生態藍圖上,下的一顆重要棋子。

還記得華為開發者大會上,余承東這樣說道:

考慮到生態原因,我們支持谷歌的安卓生態,優先使用谷歌安卓操作系統,如果安卓操作系統無法使用了,我們隨時可以啟用鴻蒙。

而方舟編譯器、EROFS 文件系統的出現。

也證明了華為早已脫離了簡單的,基於安卓定製 UI 的水平。

實力早已進化到能對系統底層推倒重來。

所以,如果安卓可以繼續用,那麼方舟編譯器或許會讓華為,在安卓陣營一枝獨秀。

如果安卓不讓用了?

有鴻蒙 OS 方舟編譯器,咱也沒在怕的。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 安卓中國 的精彩文章:

首款鴻蒙終端能否登上客廳 C 位?榮耀智慧屏現場體驗
華為 nova 5 PRO 曝光,還有新的麒麟 SoC

TAG:安卓中國 |