在開發(fā)者選項(xiàng)中有個(gè)“ GPU呈現(xiàn)模式分析(Profile GPU rendering捎泻,選擇在adb shell dumpsys gfxinfo中)”功能,在開啟這個(gè)功能后,系統(tǒng)就會(huì)記錄保留每個(gè)界面最后128幀圖像繪制的相關(guān)時(shí)間信息。在開啟這個(gè)功能后谜诫,重新啟動(dòng)APP,滑動(dòng)頁(yè)面然后執(zhí)行adb命令
adb shell dumpsys gfxinfo com.xiaomi.shop?
(我用的是小米max2手機(jī)測(cè)試的小米商城首頁(yè)攻旦。)
主要 注意Profile data in ms:下面的數(shù)據(jù)(如下圖)
Draw:表示在Java中創(chuàng)建顯示列表部分中喻旷,OnDraw()方法占用的時(shí)間。
Process:表示渲染引擎執(zhí)行顯示列表所花的時(shí)間牢屋,view越多且预,時(shí)間就越長(zhǎng)
Execute:表示把一幀數(shù)據(jù)發(fā)送到屏幕上排版顯示實(shí)際花費(fèi)的時(shí)間。其實(shí)是實(shí)際顯示幀數(shù)據(jù)的后臺(tái)緩存區(qū)與前臺(tái)緩沖區(qū)交換后并將前臺(tái)緩沖區(qū)的內(nèi)容顯示到屏幕上的時(shí)間烙无。
Draw + Process + Execute = 完整顯示一幀 锋谐,這個(gè)時(shí)間要小于16ms才能保證每秒60幀。
(吐槽:簡(jiǎn)書太爛了截酷,粘貼數(shù)據(jù)全亂了涮拗,只能截圖了。)
將上面的數(shù)據(jù)導(dǎo)入到excel表格中迂苛,生成堆積圖三热,如下圖:
圖中可以清晰的看出在滑動(dòng)時(shí),只有少量的幀耗時(shí)超過16ms∪茫基本達(dá)到了每秒60幀的要求就漾。如果每幀耗時(shí)超過16ms,就要結(jié)合操作進(jìn)行具體的優(yōu)化了念搬。