本文經(jīng)超能網(wǎng)授權(quán)轉(zhuǎn)載,其它媒體轉(zhuǎn)載請經(jīng)超能網(wǎng)同意。
去年三月份,Google發(fā)布了首個Android 7.0(Android Nougat)測試版,五月份發(fā)布正式版,雖然至今Android 7.0不足5%的市場占有率,足以讓蘋果笑掉大牙,但是隨著三四月份新機扎堆發(fā)布,Android 7.0肯定會迎來一波爆發(fā)?;蛟S你會問,Android 7.0有什么好的,我現(xiàn)在用6.0穩(wěn)定得很呢,倒還真有一個能讓你有真切感受的變化,用我們小超哥的話講就是“震驚!Android 7.0應(yīng)用安裝速度飆升666%!”,你還別不信,先看看小超哥做的一個與Android 6.0的對比視頻:
Android 7.0與Android 6.0應(yīng)用安裝速度對比
視頻中用的測試手機為Nexus 5X,在Android 6.0中,安裝同一版本的手機淘寶用時28秒,升級到Android 7.0后,安裝手機淘寶僅用時14秒,請問你震驚了嗎?
下次有基友或妹子問你Android 7.0有什么好的時候,你完全可以大膽告訴他們,Android 7.0的軟件安裝速度快了一倍啦~~~~不信你上超能網(wǎng)看看對比視頻,萬一妹子驚呆了,追問一句,怎么會快這么多呢,你肯定不能回答不知道吧,所以我軍從不打無準備之仗,要做一個脫離低級趣味一個有益于人民一個BIGGER滿滿的人,你必須往下看。
Android 4.4時的JIT解決方案
故事還得回到幾年前,還是Android 4.4的時代,那時Android還是用的Dalvik虛擬機,配合的是JIT編譯器(Just In Time,即時編譯器),其實Google在Android 2.2時就添加了JIT。當(dāng)APP運行時,JIT編譯器就會對新類進行編譯,經(jīng)過編譯后的代碼,會被優(yōu)化成相當(dāng)精簡的原生型指令碼,這樣在下次執(zhí)行到相同邏輯的時候,速度就會更快。
JIT是在運行時編譯,優(yōu)缺點很明顯,安裝速度快占用存儲空間小,主要問題是在運行時編譯開銷大,容易造成卡頓,所以在這之后,Google果斷壯士斷腕,在Android 5.0和Android 6.0中放棄了Dalvik轉(zhuǎn)投ART(Android Runtime)虛擬機懷抱,編譯策略也棄JIT改用AOT(Ahead Of Time)方案。
Android 6.0采用了AOT編譯方案
ART的策略與Dalvik不同,應(yīng)用在第一次安裝的時候,字節(jié)碼就會預(yù)先編譯成原生型指令碼,使其成為真正的本地應(yīng)用。以后運行APP時,不需要再進行編譯,啟動速度和運行速度都提高了,也就不那么卡頓了。
但是這種方案也有明顯缺點,就是在安裝中要全面預(yù)編譯,安裝時間難免長,而且會消耗掉更多的存儲空間,根據(jù)我們的測試,手機淘寶這個APP在Android 6.0系統(tǒng)中應(yīng)用存儲大小為171MB,在Android 4.4系統(tǒng)中占用為154MB,相當(dāng)于占用空間多了10%。截圖就不貼了,有興趣的朋友可找小超哥(微信9501417)索取。
在Android 7.0中,Google進一步改進了編譯策略,這次他直接來了個Hybrid Mode,也就是AOT + JIT混合模式,糅合了兩者的優(yōu)點:
Android 7.0的編譯策略
Google是這么說的:Android 7.0添加了一個JIT編譯器與代碼分析到ART,JIT編譯器是對ART當(dāng)前的AOT編譯器的一個補充,提高運行時性能,節(jié)省存儲空間,加快應(yīng)用程序更新和系統(tǒng)更新。
在Android 7.0中,安裝應(yīng)用時不再像6.0那樣對應(yīng)用代碼進行完整的預(yù)編譯,而是會根據(jù)JIT編譯器的分析結(jié)果,在設(shè)備充電或其余空閑時間對“cold code”進行解釋,對于“hot code”,則在實際使用時由JIT進行編譯,因此應(yīng)用安裝時間和占用空間大大減少了,像手機淘寶這個APP在Android 7.0系統(tǒng)中的占用大小為156MB,和Android 4.4系統(tǒng)中非常接近。主要的是,它還不會影響到應(yīng)用的運行速度。
Android 7.0中的JIT架構(gòu) - 它是如何工作的
總結(jié)一下,在Android 7.0,采用了AOT + JIT混合編譯策略,帶來的好處如下:
﹒APP安裝時間大幅縮短,只有Android 6.0系統(tǒng)的50%;
﹒系統(tǒng)升級OTA速度加快,不再需要優(yōu)化;
﹒應(yīng)用占用空間更少,一般會少10%;
﹒降低系統(tǒng)開銷,改善電池消耗。