幀率測試

1、GPU概念
GPU(Graphic Process Unit):圖形處理器,又稱顯示核心,視覺處理器。是一種專門運算圖像的微處理器。顯卡的處理器稱爲圖形處理器。它是顯示的“心臟”。

2、爲什麼要進行幀率測試(FPS)
幀率測試:也叫流暢度測試,主要是測試圖像,視頻的性能。在無線測試領域中,尤其是遊戲類的App,對圖像處理速度更爲關注。幀率過大,對於部分低配置的測試機來說,會產生大量的熱量,導致測試機過燙;如果幀率過低,會導致很不流暢,體驗比較差。
在移動設備中,FPS(Frame Per Second)達到每秒60幀以上,人眼主觀感受到的差別就不大。FPS太高了反而會產生大量的熱量導致移動設備發燙。所以以FPS爲60爲標準,即每一幀刷新的時間<=16ms,這樣才能保證滑動的流暢度。
3、獲取幀率數據
第一種方式:adb
1)進入手機的“設置”–>進入“開發人員選項”–>選上“GPU顯示配置文件”
2) 重啓被測App,對App進行操作
3) 運行命令: adb shell dumpsys gfxinfo apk_name>file_name.txt
4)打開file_name.txt,找到profile data in ms這部分數據
第二種方式:Fraps工具
具體詳情:
4、數據整理與分析
後臺記錄下來了三個csv文件,csv文件可以Excel直接打開的。這三個文件對應的就是我們剛剛勾選的三個選項:
記錄最大/小及平均率、記錄幀率、累計幀時間。
記錄最大/小及平均率的結果:
在這裏插入圖片描述
可以看到,我們一共記錄了2496幀,歷經92秒多,最小幀數25,最大幀數35,平均27.1。
累計幀率的結果:
在這裏插入圖片描述
這個結果顯示的是刷新每一幀的時間。
記錄幀率的結果:
在這裏插入圖片描述
這個結果最直觀,顯示的就是每秒的幀率。我們就用這個數值製作幀率曲線。
選中所有數據,然後在插入中選擇折線圖:
在這裏插入圖片描述
可以看到,幀數曲線就畫出來了,橫軸是時間,縱軸是幀率。
圖中可以看到,雖然畫面的幀數不高,但是曲線很平滑,對於普通筆記本來說,並不會感到卡頓,可以運行。我的本子是Intel集顯。
當我們不是要測某一場景的幀數,而是需要一段固定的時間的話,在fraps中設置“在 ( 60)秒後自動停止記錄”即可。
總結:這種方法做幀率曲線,簡單快捷,一目瞭然。圖表也可以更加完善。
在這裏插入圖片描述
打開frametimes.csv 這個文件,可以看到這樣的一個頁面。 我在這短短的92秒的時間內大概生成了1996幀,所以一共產生了2496行數據。
但是!我們仔細看就可以發現,B列(Time列) 事實上統計的是“幀累計生成時間”,而不是我們要求的“每幀生成時間”,所以我們必須要做一些處理。
在這裏插入圖片描述
我們再C列的這個位置上寫入 =B3-B2 ,可以看到字體會變色,這時候再點一下確定,數值就算出來了。
在這裏插入圖片描述
雙擊下第一行,這時候,我們要求的“每幀生成時間”統計列就出來了!
在這裏插入圖片描述
使用折線圖做出來的【每幀生成時間圖】
一般來說,30幀/秒就相當於每幀生成時間爲33ms,而30幀/秒可以作爲一個判斷畫面是否流暢的臨界點的。
在這裏插入圖片描述
而我們看這個圖,顯然播放視頻壓力還是蠻大的。

5、優化
①、提高渲染的方法(web頁)
1)把js寫在頁面的底部
2)js使用高效的選擇器
3) 將選擇器保存爲局部變量
4) 先操作再顯示。(如滑屏時,等完滑屏結束後再顯示手指所停留的那一頁界面)
②、增加特殊邏輯
如:根據不同設備、不同網絡進行不同的優化邏輯,即顯示不同的幀率。

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