Android 幀率計算及優(yōu)化

在開發(fā)者選項中有個“ GPU呈現(xiàn)模式分析(Profile GPU rendering,選擇在adb shell dumpsys gfxinfo中)”功能,在開啟這個功能后,系統(tǒng)就會記錄保留每個界面最后128幀圖像繪制的相關時間信息。在開啟這個功能后,重新啟動APP,滑動頁面然后執(zhí)行adb命令

adb shell dumpsys gfxinfo com.xiaomi.shop?

(我用的是小米max2手機測試的小米商城首頁。)

主要 注意Profile data in ms:下面的數(shù)據(jù)(如下圖)

Draw:表示在Java中創(chuàng)建顯示列表部分中,OnDraw()方法占用的時間。

Process:表示渲染引擎執(zhí)行顯示列表所花的時間,view越多,時間就越長

Execute:表示把一幀數(shù)據(jù)發(fā)送到屏幕上排版顯示實際花費的時間。其實是實際顯示幀數(shù)據(jù)的后臺緩存區(qū)與前臺緩沖區(qū)交換后并將前臺緩沖區(qū)的內容顯示到屏幕上的時間。

Draw + Process + Execute = 完整顯示一幀 ,這個時間要小于16ms才能保證每秒60幀。

(吐槽:簡書太爛了,粘貼數(shù)據(jù)全亂了,只能截圖了。)

將上面的數(shù)據(jù)導入到excel表格中,生成堆積圖,如下圖:

堆積柱狀圖

圖中可以清晰的看出在滑動時,只有少量的幀耗時超過16ms。基本達到了每秒60幀的要求。如果每幀耗時超過16ms,就要結合操作進行具體的優(yōu)化了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容