https://www.cnblogs.com/ouyang99-/p/12209250.html#_label0
Android平臺
ScreenShot(只支持USB模式)
FPS(1秒內遊戲畫面或者應用界面真實平均刷新次數,俗稱帖率/FPS)
1)Avg(FPS):平均帖率 2)Var(FPS):帖率方差 3)Drop(FPS):降帖次數(平均每小時相鄰兩個FPS點下降大於8貼的次數)
jank(1秒內卡頓次數)
1)BigJank:1秒內嚴重卡頓次數
2)jank(10分鐘):平均每10分走過來卡頓次數
3)BigJank(/10分鐘):平均每10分走過來嚴重卡頓次數
FTime(上下貼畫面顯示時間間隔,即認爲貼耗時)
1)Avg(Ftime)平均貼耗時
2)Delta(FTime):增量耗時(平均每小時兩貼之間時間差>100ms的次數)
CPU Usage(Total整機/App目標進程,統計結果和Andrid Studio Profilter一致)
CPU Clock(各個CPU核心的帖率的頻率)
Memory (PSS Memory,統計結果和Android java API標準結果一致,也Meminfo也一致)
Swap Memory (Swap Memory,部分設備支持Swap功能,在啓用Swap功能後,系統會對PSS內存進行壓縮,Swap增加,PSS會相應減少,由於壓縮會佔用CPU資源,同時相應會導致FPS降低)
根據perfdog關鍵字
FPS
FPS
1s內應用程序的刷新次數,又叫做幀率
AvgFPS
平均幀率(一段時間內的FPS)--方差越小越穩定
VarFPS
Var(FPS):幀率方差(一段時間內FPS方差)
Drop(FPS)
平均每個小時相鄰兩個FPS點下降大於8幀的次數
Jank
jank&Bigjank
1秒內的卡頓次數
PerfDog Jank計算方法:
同時滿足兩條件,則認爲是一次卡頓Jank.
①Display FrameTime>前三幀平均耗時2倍。
②Display FrameTime>兩幀電影幀耗時 (1000ms/24*2=84ms)。
同時滿足兩條件,則認爲是一次嚴重卡頓BigJank.
①Display FrameTime >前三幀平均耗時2倍。
②Display FrameTime >三幀電影幀耗時(1000ms/24*3=125ms)。
Jank(/10min)
10分鐘內的卡頓次數
CPU
AvgTotal(%)
CPU的平均使用率
AvgAPP(%)
被測試應用程序的cpu使用率
CPU Temperature
CPU的溫度
others
AvgAPP%
該app手機佔用
PeakMemory(MB)
app運行的時候,最高內存佔用
AvgSend(KB/s)
平均上傳數據速度(KB/S)
AvgRecv
平均接收數據速度()
AvgPower(mW)
平均耗電量(連接數據時檢測不到,因爲沒有意義)
AvgCTemp
平均CPU溫度
FTime
上下幀畫面顯示時間間隔,即認爲是幀耗時
AvgFTime(ms)
平均幀耗時
DetailFTime(/h)
增量耗時(平均每小時兩幀之間的時間差>100ms的次數)
FrameTime、FPS、流暢度、Jank、影響剖析
第一部分:FrameTime
Frame Time:兩幀畫面間隔耗時(也可以簡單認爲是單帖渲染耗時)
大家可以直接通過Frametime來判斷測試過程中是否出現卡頓。
第二部分:FPS
FPS的定義:帖率(1s內平均畫面刷新次數)
平均帖率:傳統說的FPS,1s內平均畫面刷新次數
瞬時帖率:單幀耗時FrameTime算出來實時FPS,每一幀畫面刷新耗時換算出的實時幀率。
FPS幀率與卡頓是否有關係?
總結:幀率高,未必流暢。
流暢度機制-黃油計劃(Jank)
Google Jank 計算思路:考慮視覺慣性,以硬件vsync時間間隔,連續1次vsync沒有新畫面刷新,
則認爲是一次卡頓, 也就是說下一次vsync時間點沒有新畫面刷新,則認爲是一次Jank。
第三部分:流暢度
流暢度和卡頓的關係
流暢度影響卡頓。這個可以簡單的理解爲視覺慣性和電影幀這兩個方面:
1 視覺慣性
視覺預期幀率,用戶潛意識裏認爲下幀也應該是當前幀率刷新比如一直60幀,用戶潛意識裏認爲下幀也應該是60幀率。
刷新一直是25幀,用戶潛意識裏認爲下幀也應該是25幀率。但是刷新如果是60幀一下跳變爲25幀,擾亂用戶視覺慣性。
這個時候就會出現用戶體驗的卡頓感。
2 電影幀
電影幀率(18-24),一般是24幀。電影幀單幀耗時:1000ms/24=40ms。電影幀率是一個臨界點。低於這個幀率,
人眼基本能感覺畫面不連續性,也就是感覺到了卡頓。
一電影幀是42ms
第四部分:PerfDog-Jank
PerfDog Jank 計算思路
考慮視覺慣性,假設以前三幀的平均幀耗時爲參考,作爲vsync時間間隔,連續兩次vsync沒有新渲染畫面刷新,
則認爲是一次潛在卡頓,也就是說下一幀耗時大於前三幀平均幀耗時2倍,則認爲一次潛在卡頓。
同時單幀耗時滿足大於兩倍電影幀耗時1000ms/24*2 (由於人眼低於24幀才能辨別畫面不連續性),
則認爲是一次真正卡頓。同時若單幀耗時大於3倍電影幀耗時,則認爲是一次嚴重卡頓。
註解:爲什麼是兩次vsync?GPU一般是3重緩衝buffer,當前幀已佔用一個buffer,
即剩餘2緩衝buffer,人眼一般可容忍2幀延遲。
爲什麼是兩幀電影幀耗時?低於24幀畫面,人眼就能感知到畫面不連續性,電影一般都是24幀。
即電影幀耗時1000ms/24=41.67ms,
兩幀電影幀耗時也就是41.67ms*2,
三幀電影幀耗時是41.67ms*3。
PerfDog Jank計算方法
同時滿足兩條件,則認爲是一次卡頓Jank.
①Display FrameTime>前三幀平均耗時2倍。
②Display FrameTime>兩幀電影幀耗時 (1000ms/24*2=84ms)。
同時滿足兩條件,則認爲是一次嚴重卡頓BigJank.
①Display FrameTime >前三幀平均耗時2倍。
②Display FrameTime >三幀電影幀耗時(1000ms/24*3=125ms)。
備註:幀率低,並不是頓卡,如幀率都是隻有幾幀了,還有什麼頓卡而言?
app爲什麼關注Jank卡頓
APP也需要關注FPS及Jank。只是需要區分使用場景,如:
1) 靜態頁面窗口
只需關注FPS,理論FPS應該爲0,否則,說明有冗餘刷新,容易引起手機發熱及耗電。
2) 有滾動動畫頁面窗口
只需關注FPS,FPS處於合適值即可,無需高頻刷新。
3) 快速滑動頁面窗口。
需要關注FPS和Jank。手機交互靈敏度就是來源於此,Android系統纔出黃油計劃Jank。一般滑動狀態下,幀率越高越好,Jank越小越好。
4) 播放視頻頁面窗口。
需要關注FPS和Jank,視頻卡頓直接影響用戶。視頻一般幀率18-24幀,Jank=0。比如微信播放視頻、視頻播放器等。