淺談AndroidGPU過分繪製、GPU呈現模式分析及相關優化

在真機設備下有一個開發者選項,這個你們都知道,咱們最經常使用的就打開'USB調試'功能,方便真機調試。程序員

在這開發者選項中還有個選項,'調試GPU過分繪製'web

 

這裏選擇第二個選項'顯示過分繪製區域'
緩存

能夠看到針對該界面 每個控件周邊都有一塊顏色區域app

 

顏色對應:佈局

 

  • 原色:沒有過分繪製
  • 藍色:1 次過分繪製
  • 綠色:2 次過分繪製
  • 粉色:3 次過分繪製
  • 紅色:4 次及以上過分繪製

 

 

測試發現大多數手機app都存在過分繪製的問題,這也由於產品設計的時候沒有這種佈局嵌套的概念,致使程序員開發出產品想要的效果就容易形成過分繪製的狀況。性能

 

過分繪製形成的結果是在部分性能差的設備,會出現卡頓的問題,不過通常對於當年出的設備不會形成影響。測試

 

--------------------------------------------------------------------------------------------------------------------------------------------優化

此外,開發者選項中還有一個選項‘GPU呈現模式分析’,選擇'在屏幕上顯示爲條形圖'就會發現界面底部出現條形圖spa

每一條柱狀線都包含三部分, 
藍色表明測量繪製Display List的時間, 
紅色表明OpenGL渲染Display List所須要的時間, 
黃色表明CPU等待GPU處理的時間。 
設計

中間有一根綠色的橫線,表明16ms,咱們須要確保每一幀花費的總時間都低於這條橫線,這樣纔可以避免出現卡頓的問題。

當頻繁超過綠線的時候對於性能很差的時候就會出現卡頓的狀況。

 

相關知識:

CPU: 中央處理器,它集成了運算,緩衝,控制等單元,包括繪圖功能.CPU將對象處理爲多維圖形,紋理(Bitmaps、Drawables等都是一塊兒打包到統一的紋理).

GPU:一個相似於CPU的專門用來處理Graphics的處理器, 做用用來幫助加快格柵化操做,固然,也有相應的緩存數據(例如緩存已經光柵化過的bitmap等)機制。

OpenGL ES是手持嵌入式設備的3DAPI,跨平臺的、功能完善的2D和3D圖形應用程序接口API,有一套固定渲染管線流程. 附相關OpenGL渲染流程資料

DisplayList 在Android把XML佈局文件轉換成GPU可以識別並繪製的對象。這個操做是在DisplayList的幫助下完成的。DisplayList持有全部將要交給GPU繪製到屏幕上的數據信息。

格柵化 是 將圖片等矢量資源,轉化爲一格格像素點的像素圖,顯示到屏幕上,過程圖以下.

 

------------------------------------------------------------------------------------------------------------------------------------

 

優化

Android對於界面渲染流暢的要求爲 1秒鐘60幀  即每一幀都在16.6ms內

 

優化點:

一、icon圖片儘可能使用 png格式  , 照片等大型圖片用jpg

二、減小多餘的嵌套層數

三、外層設置背景顏色以後,內部view能夠再也不設置背景顏色值

四、自定義view的優化

相關文章
相關標籤/搜索