首先,明確人為感受的效能不好屬於下面哪種:
1. 響應時間,介面跳轉後響應時間;
2. 流暢度,介面操作時或動畫展示的效果;
而流暢度的衡量指標又有幾種:
1. 幀率fps(frames per second,每秒鐘填充影象的幀率)
2. 丟幀sf(skipped frame)
其中得到最廣泛使用的還是幀率。以下詳細說明之
回顧本源:android如何繪製ui?
參考:顯示效能指標、效能評測調優
說實話,這裡看的不甚懂,主要理解了垂直同步機制。
每隔1個vsync間隔,android會發起一次中斷,gpu/cpu就會處理新一幀的資料,處理每幀資料的時間必定為vsync間隔的整數倍;即使gpu/cpu可處理的幀數更多最終也會保持和android顯示系統一致;而如果gpu/cpu可處理的幀數少於60,則會出現掉幀的情況,即人為感知每幀影象之間的不連貫。
基於此種情況,還出現了三快取,注意下圖中的c,在空閒時先處理了c,在之後的某個時間放到螢幕上。
補充關於雙快取與su***ce關係參考:android ui呈現
幀率值在什麼範圍可認定為流暢?
理想狀態每秒展示60幀時人眼感受不到卡頓,1000ms/60幀,即每幀繪製時間不應超過16.67ms。
幀率如何計算?
二者的區別是什麼?
參考:fps計算方法比較
這是需要重點了解的功能,部門原已採用gfxinfo獲取相關資料,但網搜到後期資料處理多是基於su***ceflinger 的資料。導致研究發現資料處理方法對不上,實則忽略了二者的區別。
gfxinfo:
su***ceflinger:
算出fps了,這個單純的資料能夠代表流暢度麼?關於這點,很多資料中也有質疑。由於android自帶adb測試效能命令,輸出乙個階段的幀繪製耗時,多次測試獲得多個曲線,不能簡單求均值獲得概括資料。有資料是建議使用掉幀率來衡量。
利用處理幀數 / (處理幀數 + 額外的垂直同步脈衝) * 60計算,其中處理幀數常為128
實測補充說明:
附錄:實際獲得的gfxinfo資料:其實後五項的資料意義還不太清晰,求指教,為什麼求和之後不等於janky frames
分類:
android,
qathing
好文要頂
關注我收藏該文
qa小蝦
關注 - 0
粉絲 - 0
+加關注 00
uuencode mail 傳送附件(由格式錯誤引發的思考)
在linux docker上安裝stf
posted @ 2017-06-04 22:19
收藏
android流暢度比Ios差的原因
andorid更新了乙個版本又乙個版本,硬體從單核到雙核到四核,系統流暢度總算基本能和ios持平了。不過人們不禁會問,為什麼都是基於linux,兩個系統會差別如此大?為什麼iphone 4用單核處理器就能實現的流暢度,android要高階雙核才能保證?近日,android開發小組工程師dianne ...
位元速率,解析度,幀率
顯示解析度 螢幕解析度 是螢幕影象的精密度,是指顯示器所能顯示的畫素有多少。由於螢幕上的點 線和面都是由畫素組成的,顯示器可顯示的畫素越多,畫面就越精細,同樣的螢幕區域內能顯示的資訊也越多,所以解析度是個非常重要的效能指標之一。可以把整個影象想象成是乙個大型的棋盤,而解析度的表示方式就是所有經線和緯...
解析度 幀率 位元速率關係
幀率 fps 每秒鐘要多少幀畫面 以及gop 表示多少秒乙個i幀 位元速率 編碼器每秒編出的資料大小,單位是kbps,比如800kbps代表編碼器每秒產生800kb 或100kb 的資料。三者的對應直播質量的影響因素 幀率 影響畫面流暢度,與畫面流暢度成正比 幀率越大,畫面越流暢 幀率越小,畫面越有...