Android性能優化 相關文檔

最近遇到Android性能優化問題,使用AS的profile看了下堆棧,“nSyncAndDrawFrame 耗時過長”,然後打開GPU渲染分析,紅色線條很長。

GPU渲染時的每個顏色代表的意義如下:

一般主要看深綠色和紅色就行,意義如下:

  • 第一步是由應用程序進程的Main Thread構建Display List,即updateRootDisplayList方法,對應Gpu呈現模式分析的深綠色線條,其中軟件渲染的子視圖需要先繪製在一個Bitmap上,然後這個Bitmap記錄在父視圖的Display List中,繪製的視圖內容越多構建Display List的耗時越長
  • 第二步由應用程序進程的Render Thread渲染Display List,即nSyncAndDrawFrame方法,對應Gpu呈現模式分析的紅色線條,其中執行渲染需要得到Main Thread的通知,此通知在Main Thread與Render Thread信息同步完畢後發出。信息同步過程中,Display List引用到的Bitmap會封裝成Open GL紋理上傳至GPU。當全部Open GL紋理上傳完畢,說明引用到的Bitmap全部同步完成。同樣,繪製的視圖內容越多,則引用到的Bitmap越大,進而導致上傳耗時增加Render Thread執行渲染等待通知的時間也就相應變長

profile頁面有個更清晰易懂的描述。

YouTube上有個這塊的視頻,描述DisplayList是什麼以及如何生成和繪製,大小改變如何影響DisplayList重繪。推薦觀看。

https://www.youtube.com/watch?v=we6poP0kw6E&index=64&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE

此外這個視頻是“Android Performance Patterns”的一部分,推薦下這個視頻合集,一共79個,不過可惜的是隻更新到16年8月。

https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE

 

參考:

https://juejin.im/post/5a32b099f265da432c23e1d3

https://developer.android.com/studio/profile/inspect-gpu-rendering
https://developer.android.com/topic/performance/rendering/profile-gpu.html

https://www.youtube.com/watch?v=we6poP0kw6E&index=64&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE

https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE

 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章