Perfdog

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。比如微信播放視頻、視頻播放器等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章