測試方法一:系統(tǒng)自帶-開發(fā)者模式
實(shí)際上鱼炒,為了方便開發(fā)者測試,安卓本身就內(nèi)置了流暢度檢測的功能蝌借。不過昔瞧,這需要我們開啟隱藏的開發(fā)者選項(xiàng)指蚁。如果你在用原生系統(tǒng),那么開啟開發(fā)者選項(xiàng)的方法很簡單硬爆,進(jìn)入到設(shè)置菜單“關(guān)于手機(jī)”頁面欣舵,點(diǎn)擊數(shù)次“版本號(hào)”,即可開啟開發(fā)者選項(xiàng)缀磕。如果用的是其他ROM缘圈,方法也許有所不同,比如說魅族的Flyme開啟開發(fā)者選項(xiàng)的方法是在撥號(hào)界面輸入“##6961##”袜蚕,其他機(jī)器方法也各有不同糟把,大家可以參照廠商的說明。
進(jìn)入到開發(fā)者選項(xiàng)牲剃,可以看到有“GPU呈現(xiàn)模式分析”的選項(xiàng)进陡,開啟后即可以條形圖和線形圖的方法顯示系統(tǒng)的界面響應(yīng)速度矢空,可以用以觀察系統(tǒng)流暢度。那么要如何根據(jù)曲線判斷系統(tǒng)是否流暢呢?實(shí)際上這個(gè)曲線表達(dá)的是GPU繪制每一幀界面的時(shí)間魄缚,只要不超過頂部綠線,都可以視為足夠流暢知残。
開啟GPU呈現(xiàn)模式分析
只要下方的曲線不超過綠線辱志,都可以視之為流暢
使用系統(tǒng)自帶方法測試流暢度的好處很多,首先是數(shù)據(jù)準(zhǔn)確箱残,系統(tǒng)肯定最知道自己的幀率如何滔迈;其次是不占資源,對(duì)流暢度測試的影響比較小被辑。那么這個(gè)方法是否萬無一失呢燎悍?其實(shí)還是有一些缺點(diǎn)的。比如說利用CPU渲染UI的App界面盼理,就無法得到測試結(jié)果(當(dāng)然這些界面基本無一例外卡頓無比谈山,不用測也知道不流暢);當(dāng)系統(tǒng)停頓了一下宏怔,例如微博加載圖片時(shí)勾哩,響應(yīng)速度會(huì)大幅增加,曲線瞬間突破綠線——這情況不能說不流暢举哟,因?yàn)檫@屬于內(nèi)容和界面先后響應(yīng)的機(jī)制思劳,如果光憑曲線是否突破綠線判斷是否流暢,未免太過局限妨猩。
1.在設(shè)置里打開GPU呈現(xiàn)模式分析潜叛。點(diǎn)擊Android設(shè)備的“設(shè)置”->"開發(fā)者選項(xiàng)",然后勾選“GPU顯示配置文件”。
- 1.點(diǎn)擊Android設(shè)備的“設(shè)置”->"開發(fā)者選項(xiàng)"威兜,然后勾選“GPU顯示配置文件”销斟。重啟我們的應(yīng)用。啟動(dòng)應(yīng)用以后椒舵,在應(yīng)用的頁面上做滑動(dòng)
2.lijiedeMacBook-Air:~ lijie$ adb shell dumpsys gfxinfo com.dianping.v1>fps.txt
3.打開生成的fps.txt蚂踊,找到Profile data in ms這部分?jǐn)?shù)據(jù)。
4.為了看得更直接笔宿,我們可以把數(shù)據(jù)放到Excel中犁钟,然后以圖表的形式進(jìn)行查看。
5.從圖中可以看出來泼橘,我這個(gè)應(yīng)用的流暢度是很低的涝动,正常情況下幀率應(yīng)該在16ms左右,如果1秒60幀的話炬灭,而且Execute時(shí)間太長醋粟!所以是需要進(jìn)行優(yōu)化的。
點(diǎn)評(píng)APP:
a: "Draw" : 創(chuàng)建顯示列表(display lists重归,記錄所有view對(duì)象的繪制指令)的時(shí)間開銷米愿。
b: "Process" : 執(zhí)行顯示列表中繪制指令的時(shí)間。UI視窗中的View數(shù)量越多鼻吮,需要執(zhí)行的繪畫命令就越多吗货。
c: "Execute" : 將一幀圖像交給合成器compostior的時(shí)間。這部分占用的時(shí)間通常比較少
測試方法二:****FPS Meter測試安卓幀數(shù)
FPS Meter是一款非常實(shí)用的小軟件狈网,能夠用數(shù)字實(shí)時(shí)顯示安卓界面的每秒幀數(shù),非常直觀笨腥。此外拓哺,F(xiàn)PS Meter還可以顯示最大幀數(shù)、最小幀數(shù)以及平均幀數(shù)脖母,用來評(píng)價(jià)安卓流暢度極具價(jià)值士鸥。由于涉及到了系統(tǒng)功能,所以FPS Meter需要root谆级。如果你打算嘗試烤礁,請(qǐng)先root機(jī)后再使用。
FPS Meter的使用很簡單肥照,開啟App后啟動(dòng)服務(wù)即可脚仔。在App內(nèi),你可以選擇幀數(shù)顯示的位置舆绎,以及是否開啟平均幀數(shù)鲤脏、最低/最高幀數(shù)顯示。開啟服務(wù)后,即可看到有幀數(shù)顯示于界面上猎醇。這里要注意窥突,使用FPS Meter測量幀數(shù)需要在開發(fā)者選項(xiàng)中停用HW疊加層才會(huì)比較準(zhǔn)確。
FPS Meter可以顯示最大最小幀數(shù)以及平均幀數(shù)
FPS Meter可以測試界面幀數(shù)硫嘶,不過某些手機(jī)如果界面靜止阻问,幀數(shù)會(huì)為0。FPS Meter除了測量系統(tǒng)界面幀數(shù)外沦疾,還可以用來測量游戲的幀數(shù)称近,所以用FPS Meter來測試某部安卓機(jī)游戲性能多強(qiáng)也是個(gè)很好的選擇。
當(dāng)然曹鸠,F(xiàn)PS Meter也并非十全十美煌茬。由于屬于第三方App,所以可能會(huì)有一些兼容性問題彻桃。某些安卓機(jī)或者ROM使用FPS Meter可能會(huì)不兼容坛善,即使成功開啟了幀數(shù)顯示也沒法測量到準(zhǔn)確數(shù)值,而某些設(shè)備使用FPS Meter甚至?xí)罊C(jī)邻眷。不過在大多數(shù)情況下眠屎,這款A(yù)pp還是相當(dāng)值得信任的。
安卓在多個(gè)版本中都通過新技術(shù)提升了流暢度肆饶,比如說安卓2.3引入Dalvik改衩、安卓4.0引入GPU界面繪制、安卓4.1引入黃油計(jì)劃驯镊、安卓4.3引入Trim以及安卓4.4引入ART等等葫督。
H5頁面加載速度:window.performance.timing
Android以上測試方法不適用h5頁面
如何分析頁面整體加載速度:
主要是查看指標(biāo)值PAGET_頁面加載時(shí)間,此指標(biāo)指的是頁面整體加載時(shí)間但不含(onload事件和redirect), 此指標(biāo)值可直接反應(yīng)用戶體驗(yàn), 從此項(xiàng)指標(biāo)可以知道指定某時(shí)間段的頁面加載速度值,以及和天,周,月的對(duì)比狀況.也可以查詢指標(biāo)ALLT_頁面完全加載時(shí)間, 可以查詢到從瀏覽器開始導(dǎo)航(用戶點(diǎn)擊鏈接或在地址欄輸入url或點(diǎn)刷新,后退按鈕)到頁面onload 事件js完全跑完的所有時(shí)間.如果發(fā)現(xiàn)頁面加載速度有增加或減少,則可以分項(xiàng)查詢前面表格中的每個(gè)指標(biāo)值,總的來說他們的關(guān)系如下:
dom開始加載前所有花費(fèi)時(shí)間=重定向時(shí)間+域名解析時(shí)間+建立連接花費(fèi)時(shí)間+請(qǐng)求花費(fèi)時(shí)間+接收數(shù)據(jù)花費(fèi)時(shí)間
pageLoadTime頁面加載時(shí)間=域名解析時(shí)間+建立連接花費(fèi)時(shí)間+請(qǐng)求花費(fèi)時(shí)間+接收數(shù)據(jù)花費(fèi)時(shí)間+解析dom花費(fèi)時(shí)間+加載dom花費(fèi)時(shí)間
allLoadTime頁面完全加載時(shí)間=重定向時(shí)間+域名解析時(shí)間+建立連接花費(fèi)時(shí)間+請(qǐng)求花費(fèi)時(shí)間+接收數(shù)據(jù)花費(fèi)時(shí)間+解析dom花費(fèi)時(shí)間+加載dom花費(fèi)時(shí)間+執(zhí)行onload事件花費(fèi)時(shí)間
resourcesLoadedTime資源加載時(shí)間=解析dom花費(fèi)時(shí)間+加載dom花費(fèi)時(shí)間
流暢度暫時(shí)沒有發(fā)現(xiàn)好用的測試衡量工具,開發(fā)層面了解板惑,主要是根據(jù)log分析