日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一秒点击屏幕次数测试_安卓App性能专项测试流畅度深度解析

發(fā)布時(shí)間:2023/12/4 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一秒点击屏幕次数测试_安卓App性能专项测试流畅度深度解析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

指標(biāo)背景

流暢度,顧名思義是用戶感知使用App頁面時(shí)的流暢情況。

“App卡不卡”,這是用戶最直接的感受。

但是要用量化之后的數(shù)據(jù)衡量流暢度,在Android平臺這邊并沒有直接有效的方式/手段去監(jiān)控。

幀率&刷新頻率

首先需要了解到兩個(gè)概念:

刷新頻率(Refresh Rate)

代表屏幕在一秒內(nèi)刷新操作的次數(shù),這取決于硬件的固定參數(shù),例如60HZ。

幀率(Frame Rate)

代表GPU在一秒內(nèi)繪制操作的幀數(shù),例如常見的24fps,60fps,單位是fps(每秒幀數(shù)),很多游戲里面也會有這個(gè)指標(biāo)。

24fps&60fps

現(xiàn)在電影行業(yè)默認(rèn)的規(guī)則幀率是需要24fps,除了一些極個(gè)別的電影超高幀率之外(如李安的比利林恩.中場戰(zhàn)事達(dá)到超高幀率120fps)。

辣么有的同學(xué)就問了:是不是幀率越高越好。

這里可以給到你肯定的回答:是的!

就像顯示器的分辨率一樣,之前認(rèn)為1080p足夠了,現(xiàn)在用到了4K,5K之后才發(fā)現(xiàn)以前的真沒法看。

當(dāng)然支持高幀率也需要對應(yīng)的硬件設(shè)備,emm..話題跑偏了,回到Android流暢度上來,現(xiàn)在Android平臺App或者是游戲普遍需要達(dá)到60fps用戶肉眼才能感覺到“不卡”。

咦?不是24fps嗎?那么問題來了,為什么電影只需要24fps就能是流暢的效果,而App/游戲需要達(dá)到60fps?

動態(tài)模糊

首先小伙伴們可以看下這張圖,設(shè)計(jì)功力較渣,大家見諒

第一部分為電影物體運(yùn)動軌跡,不理解,沒關(guān)系,再來看下這張圖

并不是電影不高清,而且主角在激烈的戰(zhàn)斗啊!

怎么樣,相信聰明如你應(yīng)該懂了,電影每幀不僅會記錄當(dāng)前時(shí)間點(diǎn)的信息,還會記錄物體的運(yùn)行軌跡。所以我們看到是模糊的效果。

但是游戲/App的幀呢?

請看下半部分,每幀只會記下當(dāng)前時(shí)間點(diǎn)的信息,并不會記錄物體的運(yùn)行軌跡,每一幀都是清晰的,經(jīng)過GPU渲染加載出來的。

所以動態(tài)模糊也是為什么電影只需要24fps的一個(gè)原因,那么除了動態(tài)模糊還有別的因素會影響的嗎?

有的!

幀間隔/垂直同步/Vsync

說到幀間隔這個(gè)名詞大家可能比較陌生,垂直同步相信很多玩游戲的小伙伴在游戲的設(shè)置菜單有見過,那么他是用來做什么的呢?

還是來看下面這張圖:

可以看到在電影播放的時(shí)候,每幀的間隔時(shí)間都是相等的,過度非常平滑。

而在游戲幀/App幀,可能有些場景幀間隔時(shí)間較大。

(比如人民群眾喜聞樂見的國民級手游王者榮耀在團(tuán)戰(zhàn)的時(shí)候)。

有些場景間隔時(shí)間較小(頁面不復(fù)雜/簡單應(yīng)用場景)。

為什么會造成這個(gè)原因呢?

這得從App的渲染機(jī)制/原理講起。

CPU負(fù)責(zé)將頁面的布局/元素進(jìn)行計(jì)算將數(shù)據(jù)推給GPU進(jìn)行處理,GPU負(fù)責(zé)進(jìn)行柵格化(也就是將UI元素繪制到屏幕上)。

所以幀間隔時(shí)間跟頁面結(jié)構(gòu)復(fù)雜程度相關(guān),頁面結(jié)構(gòu)越復(fù)雜,CPU/GPU所需要的時(shí)間越多。

講到這里,可能有些同學(xué)馬上想到是不是可以有某種技術(shù)可以讓幀間隔的時(shí)間保持一致?

沒錯(cuò),就是垂直同步!

系統(tǒng)會每間隔一段時(shí)間發(fā)送一個(gè)Vsync同步信號,當(dāng)接收到了Vsync就會刷FrameBuffer(簡單理解就是去刷新屏幕顯示)。

所以有了垂直同步可以解決掉幀間隔不同步的問題。

但是事情往往不會這么簡單的,有了垂直同步就可以高枕無憂了嗎?并不會!

丟幀

雖然開啟了垂直同步能夠保證幀間隔時(shí)間相等,但是能夠保證每幀都能夠及時(shí)的渲染出來嗎?

并不能,來看下面這張圖:

系統(tǒng)會每隔16ms去發(fā)送Vsync信號通知CPU/GPU可以開始渲染工作了,為什么是16ms?

機(jī)智如你應(yīng)該能想到60fps的倒數(shù)就是16.67ms(省略后面的小數(shù)點(diǎn))。

如果要能夠達(dá)到60fps的話,那么就要求每一幀都應(yīng)該在16ms之內(nèi)繪制完畢,否則就出現(xiàn)了右邊圖里面的情況-丟幀!

16ms之內(nèi)沒有完成該幀的繪制,那么就必須要等到下次系統(tǒng)的Vsync信號過來了,中間經(jīng)過的時(shí)間就是16ms*2(大致為34ms)。

而且丟幀也是App卡頓的根本原因!!!

好了,關(guān)于流暢度的解析就先到這里,下篇再給大家講解怎么監(jiān)控指標(biāo)以及怎么測試的問題。

總結(jié)

以上是生活随笔為你收集整理的一秒点击屏幕次数测试_安卓App性能专项测试流畅度深度解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。