小心機 大變局——iQOO Neo 背後的“加速祕籍”

當硬件配置已經走向“田忌賽馬”思路做越級產品的時候,獨闢蹊徑的優化就成為下一個重要戰場。
小心機 大變局——iQOO Neo 背後的“加速秘籍”

上週二晚上發佈的 iQOO Neo 一經公佈便成為網絡熱議的“話題產品”:一來是罕有的以前代旗艦處理器打造的新中端“越級”型產品,令一些熱衷於高性能產品但預算有限的朋友們看到了以不多的價格買到更高性能產品的“曙光”;二來是相較於iQOO 更大的 4500mAh 電池容量讓更多對手機續航“心有慼慼焉”的用戶看到了希望。不到2000元的價格,以去年旗艦處理器的規格加上今年流行的產品形態和外觀,從面兒上就贏了不少互聯網用戶的充分好感——而這僅僅是硬件層面表露出來的“產品優勢”。

小心機 大變局——iQOO Neo 背後的“加速秘籍”

其實 iQOO Neo 有一項產品細節在當晚的社交網絡討論中被忽略了,當然發佈會上這個特性也被“一頁帶過”:Monster編譯增強技術。大概是因為這個新特性聽上去既高深又不明覺厲,產品發佈後也鮮有探討。但實際上,這項特性關乎用戶使用手機時真正可感知的響應速度以及應用甚至是遊戲運行時的流暢度。它是對於安卓系統運行機制的一次“改造”,目標簡單明確:讓消費者可感知的運行體驗更流暢。

小心機 大變局——iQOO Neo 背後的“加速秘籍”

在很長一段時間內,安卓系統的用戶一直經受著這樣的困擾:為何配置那麼高的安卓手機總是感覺離iPhone的流暢度差一截?為何我都買了旗艦處理器的產品還是時不時的卡一下?因此,安卓用戶也常被iPhone用戶揶揄:看你們那麼追求性能配置最後還是不如我們蘋果黨用著省心。究其根本原因,其實是和安卓系統的運行機制有關——說到這裡,我們就先得把“編譯”這個詞給解釋了:所謂的“編譯”,就是:將“一種語言(通常為高級語言)”翻譯成能直接被計算機或虛擬機執行的目標代碼。這裡面又會牽扯到編譯器,編譯器的效率則會直接影響程序運行的性能/效率。​

安卓系統選擇了Java作為基礎的編寫語言,從Java語言的本身來說它有著很多的優勢:例如跨平臺、安全性不錯等特性。但安卓應用也並非全部的細節都由Java編寫,考慮到安全性、可靠性、兼容性等不同的因素,不少開發者會使用不同的語言來編寫其它的庫供Java調用。那麼,就產生了在安卓系統內部不同模塊採用了不同語言編寫的狀況。而為了達到各個模塊的互相理解,採用不同語言的不同模塊相互調用則會帶來系統資源上的內耗——這時候就需要編譯器上場,將這些不同的語言全都編譯成安卓系統能懂的、機器可以理解、可以執行的機器語言。​

安卓系統內部還有一個重要的運行機制:虛擬機。

Java語言的開發包(JDK)裡有一項重要的功能叫“虛擬機”。所謂的“虛擬機”就是針對不同的硬件環境而生的:我不管你是什麼樣的硬件哪家的處理器,甚至是不同指令集的處理器(ARM也好x86也罷),都可以跨平臺的使用Java語言編寫的程序。這樣處理的好處顯而易見,大幅提升了安卓系統運行程序的兼容性,但問題是你也得有一塊專門的系統資源(包括處理器和內存資源)留給虛擬機使用(大家可以仔細回想一下我們在PC上安裝一個虛擬機的時候要給這個虛擬機應用分配獨立的存儲空間)。那麼,手機上的程序運行得快不快穩不穩好不好,就要仰賴兩個過程:一是這個應用先由Java編寫成可執行文件(Dex碼)的部分(即看這個軟件編寫得好不好),另一則是手機端的虛擬機虛擬環境解釋執行為機器可讀二進制碼的部分。這裡就會嚴苛的考驗整套編譯邏輯的效率問題,而早年安卓系統不盡如人意的運行流暢度,有很大一部分原因來源於此。​

用過早年安卓手機的朋友一定對安卓手機用用就卡頓的經歷印象深刻,一來當年的處理器計算性能指標的確不夠高,二來安卓系統的這套編譯執行邏輯也得背很大的一個“鍋”:Android 1.0 的時期,安卓所使用的Dalvik虛擬機執行“解釋一句執行一句”的方式,類似於你在和一個外國人對話,你不懂英文需要一個翻譯,外國人說一句話,翻譯翻一句話,然後你再做一個對應的事情,整體的執行效率可想而知。到了 Android 2.0 的時候,系統變聰明瞭一點:如果它發現系統應用內老是有一段代碼頻繁執行,那就把這段直接編譯解釋好放在那裡,下次調用的時候就不用重複重新解釋,直接執行。這種運行機制被稱為JIT(Just In Time),在一定程度上提升了應用的運行效率。不過它的問題是你這個應用得在後臺待著不能關,一旦應用退出,那不好意思,下次重來吧。​

應該還有不少從老安卓時代過來的用戶對Android 4.4的到來印象深刻:那是一次罕見的升級完系統後手機運行流暢度突然得到提升的“驚喜”時刻。“ART”這三個字的縮寫就在這個時候被不少手機玩家熟悉——Android 4.4 引入了一個全新的虛擬機“ART虛擬機”(Android Run Time),採用了一個新的AOT編譯器,全稱是 Ahead of Time。從這個名字就能看出來這個編譯器要做的事情:“提前”將部分代碼編譯解釋成機器可識別的字節碼,轉為靜態翻譯。那這一塊就不用邊解釋邊執行了,大幅提升了效率。這個特性在隨後公佈的 Android 5.0 上得到了廣泛的應用,用戶也直觀的感受到了 Android 5.0 系統之後顯著的系統流暢度提升。但是這項技術不能解決Java語言中動態特性的問題,像遊戲這種大量變量的執行依舊是做不到直接編譯的,還是要邊解釋邊執行,嚴酷的考驗著已經性能突飛猛進的手機處理器的計算性能。​

安卓系統能做的就到這裡了,如果還想讓整個系統的執行效率更進一步的話,那就只有手機廠商自己來做剩下這部分的編譯優化了,能不能讓所有的編譯都提前完成?交給手機一個純粹的可以直接執行的機器碼?就好像一篇外文稿件已經完全翻譯好了擺在你的面前,你的工作可以馬上進行而不用再找翻譯花時間翻譯全文。不少廠商已經提前開始了對於這項工作的優化處置,而vivo也很快跟上這個步伐,在2019 vivo 開發者大會上宣佈了“ART++編譯增強Turbo”這項技術,其實也就是我們在 iQOO Neo 發佈會上看到的“Monster編譯增強技術”。

小心機 大變局——iQOO Neo 背後的“加速秘籍”

如前文所說的一樣,“Monster編譯增強技術”進一步優化流暢度的方式就是將系統框架層的代碼進行“提前鋪路”:全部提前編譯成機器可直接執行的字節碼,直接執行,不用解釋。而且還有一點:將App代碼對硬件系統資源的調用路徑進行提前解析。在你安裝應用的時候,系統就會自動學習一次這個App打開時需要調用的資源路徑,等以後再要打開的時候就直奔主題無需單獨摸索。好比一個人已經對某條路線熟悉之後就無需再拿著地圖“按圖索驥”的搜索路徑。用這兩種方式的組合,“Monster編譯增強技術”實現了應用和系統程序執行速度的提升。加上驍龍845處理器,你能體會出比去年的驍龍845機器更順暢的應用體驗。

小心機 大變局——iQOO Neo 背後的“加速秘籍”

根據vivo官方的數據,“Monster編譯增強技術”對 iQOO Neo上的APP響應速度有了不小的提升:冷啟動速度相比優化前最高可提升25%,而熱啟動則提升了9%。在QQ、騰訊新聞以及大家“頗有微詞”的阿里系應用天貓上的冷啟動速度提升非常明顯。實際上在 iQOO Neo 之前,vivo 另一部平價產品 Z5x 就已經率先應用上了“ART++編譯增強Turbo”。搜一搜微博,你能直接的發現有用戶直言不諱的表述 Z5x 的運行流暢度優於部分同期發佈的、同樣採用驍龍710的產品,這就是很直接的用戶感觀。

小心機 大變局——iQOO Neo 背後的“加速秘籍”

對於驍龍845、855這樣的旗艦處理器,“Monster編譯增強技術”能更好的激發系統的極致性能;而對於處理器規格並不高的入門產品,這項技術則能更好的優化系統的運行流暢度,甚至實現操作體驗的“越級”感觀。未來希望vivo能將這項技術應用到更多的產品上,以及向還在系統維護週期內的老產品推送,以同樣的硬件規格獲得更好的系統響應和流暢體驗。就這麼一項在發佈會Keynote上被“快速翻過”的技術,其實和我們每天接觸手機所經歷的最常見的操作緊密相關。看起來是一點小小的“心機”,實際上,它也是事關手機生態和應用體驗大局的“改良劑”。

小心機 大變局——iQOO Neo 背後的“加速秘籍”


分享到:


相關文章: