? ? ? ?在一般的手機測試中,開發人員可能只是考慮到用戶需求,實現了系統功能的完整性,而對于系統的性能方面相對涉及的就比較少,而用戶對產品的使用過程中,不僅考慮的是產品功能的實現,更多考慮的卻是產品的性能,一款產品在用戶使用起來因為性能的問題覺得反感,雖然功能完整卻得不到用戶的滿意,這種產品最終還是會被淘汰的,對于公司的盈利也會有較大的影響。
? ? ? ? 用戶在使用Android手機的過程中,就拿launcher界面來說吧,主屏幕之間的滑動流暢或菜單之間的切換,會給用戶帶來一種手機性能很好的感覺,反之,如果出現畫面的卡幀、丟幀的狀況,用戶覺會覺得手機的整體沒有達到自己的心理預期,并不會去選擇這樣的手機;
? ? ? ? 目前在手機性能測試人們主要關注的方面在手機的流暢度、RAM、功耗等方面,流暢度方面,直接影響用戶對手機的體驗;而對于流暢度的定義,官方的定義為手機使用流暢,不卡頓,運行程序時達到60fps或以上的繪制效率;通俗點說法就是用戶在對操作系統或應用的交互過程中所能感受到,系統相應操作并執行、描繪、顯示出來的時間是在用戶所能接受的范圍之內,不會導致系統或應用的運行效率變低,用戶感受到使用的不快。
? ? ? ?如何來量化流暢度呢?目前現有描述流暢度的指標主要包括:
FPS:系統合成幀率
Aggregate frame stats:應用跳幀次數、幅度
Jankiness count:(估算)應用跳幀次數
Max accumulated frames:(估算)應用跳幀幅度
Frame rate:應用繪制幀率
SM:應用繪制輪詢頻率
Skipped frames:應用跳幀次數、幅度
? ? ? ? 在這些指標當中最為人熟知的當為FPS了,人們認為fPs在大于60幀/秒時就感覺到畫面的流暢了,為什么呢?
首先畫面的幀率越高,體驗越好,在以下這幾個幀率值中人們的直觀感受是不同的:
12 fps:由于人類眼睛的特殊生理結構,如果所看畫面之幀率高于每秒約10-12幀的時候,就會認為是連貫的
24 fps:有聲電影的拍攝及播放幀率均為每秒24幀,對一般人而言已算可接受
30 fps:早期的高動態電子游戲,幀率少于每秒30幀的話就會顯得不連貫,這是因為沒有動態模糊使流暢度降低
60 fps:在實際體驗中,60幀相對于30幀有著更好的體驗
85 fps:一般而言,大腦處理視頻的極限
? ? 那目前優化的極限為60FPS,因為顯示器的刷新頻率是固定的,而其中最常見的刷新頻率是 60 Hz。 這樣做是為了繼承以前電視機刷新頻率為 60Hz 的設定。然而顯卡的生成圖像的頻率是變化的,最理想的情況是兩者之間的頻率是相同且協同進行工作的,在這樣的理想條件下,達到了最優解。但實際中顯卡的生成圖像的頻率是變化的,如果沒有有效的技術手段進行保證,兩者之間很容易出現這樣的情況:當GPU還在渲染下一幀圖像時,顯示器卻已經開始進行繪制,這樣就會導致屏幕撕裂(Tear),這會使得屏幕的一部分顯示的是前一幀的內容,而另一部分卻在顯示下一幀的內容。
? ? ? ? 屏幕撕裂(Tear)的問題,早在 PC 游戲時代就被發現, 并不停的在嘗試進行解決。 其中最知名可能也是最古老的解決方案就是 V-Sync 技術。V-Sync 的原理簡單而直觀:產生屏幕撕裂的原因是顯卡在屏幕刷新時進行了渲染,而 V-Sync 通過同步渲染/刷新時間的方式來解決這個問題。顯示器的刷新頻率為 60 Hz,若此時開啟 V-Sync,將控制顯卡渲染速度在 60 Hz 以內以匹配顯示器刷新頻率。這也意味著,在 V-Sync 的限制下,顯卡顯示性能的極限就限制為 60 Hz 以內。
? ? ? ?那如何來獲取FPS等指標數據呢,及使用的命令工具等,見下次分解。