2016 Google I/O Android N Beta版運行速度提升600%是怎麼做到的?

早上看到的新聞:Android N Beta版發布:應用運行速度提升6倍

http://www.ithome.com/html/android/226464.htm

怎麼理解速度快6倍?


沒有提到邊界(限制)條件直接下結論是耍流氓

Android developers 的 YouTube 頻道有一節session專門講解N的art和舊版相比的變化

https://www.youtube.com/watch?v=fwMM6g7wpQ8

大致上:

1,安裝應用的時候不做aot編譯,後台在空閑且充電的時候會進行pgo式的aot編譯(Profile-Guided Optimizations),而且不是所有的代碼都會被編譯。如此減小了應用佔用的空間,極大提高了安裝速度,另一個好處是,更新系統後,惱人的「正在優化系統」一兩分鐘就能過去(正在優化系統實際上就是把無法通過驗證的的應用,一般是全部應用的dex文件重新編譯一次,在Android 5~6時代的時候,這個時長是十幾分鐘)。

Nexus 6p(我們都知道snapdragon 810這個處理器性能不咋地)的測量結果是:

M 更新到 M(的下一個月度安全更新),編譯全部的應用需要十幾分鐘

M 更新到 N的同一個過程只需要不到四分鐘

N 更新到 N連一分鐘都不需要(M到N需要的驗證更多一些)

2,知乎上有大神(好像是 @RednaxelaFX 的這個帖子ART和JIT的除了編譯的時機區別以外,對於編譯的方式有什麼區別嗎? - RednaxelaFX 的回答)提到過,M還是N的art的編譯器源自chrome的V8,更早的lollipop的quick編譯器來自於dalvik

被第三方應用使用的apk做完整的(通用)aot編譯,其餘部分且已經收集了足夠多遙測數據的apk則進行pgo類型的aot編譯,這種情況下只編譯

3,art的解釋器比M的快3倍

4,重新引入jit編譯(好像這句話說得也不對),但是從N開始,應用一開始運行的時候,可能沒有已經編譯好的代碼,雖然N的解釋器比M快了不少,但和編譯好的代碼相比還是很慢的,這個時候JIT就需要回來了。

5,N的art確實比M的有更多優化,性能有所提高。

6,垃圾收集也有改進

對象分配的代碼用彙編代碼重寫,art可以卸載類(class unloading)

(註:圖片均是視頻中的截圖)


你確定這個問題能有人回答的了


IO開場看了直播,如果沒有記錯的話,大會上說的是用了一個新的圖形處理引擎還是怎麼招,是遊戲性能在用新引擎之後提升600%,也就是六倍


不敢亂說

猜測而已

虛擬機優化


我也一直在糾結,還以為是翻譯錯誤,嚇死我。


媒體沒聽懂,瞎寫的,標題博取眼球,n版本主要改進了ota升級速度和安裝軟體速度,運行速度幾乎跟m差不多


推薦閱讀:

谷歌中國到底是獨立的公司,還是美國谷歌的一個辦公室、一個部門?
以 Facebook 為代表的社交廣告和以 Google 為代表的精準廣告,主要區別在什麼地方,前景如何?
Google 的 Android 部門怎麼盈利?這個部門有什麼直接的商業收入?
如何評價2016谷歌開發者大會在中國的北京和上海召開?

TAG:谷歌Google | GoogleIO | Android |