一、介紹
創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司,提供網(wǎng)站設(shè)計(jì)、做網(wǎng)站,網(wǎng)頁設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!TraceView是一款性能分析工具,可以進(jìn)行數(shù)據(jù)采集和分析,可以以圖形化的方式讓我們了解要跟蹤的程序并且能得到相關(guān)method。本文只講解在app啟動(dòng)時(shí)候TraceView的功能,當(dāng)然,對(duì)于app運(yùn)行過程中出現(xiàn)的卡頓,延遲現(xiàn)象,也可以進(jìn)行分析。
TraceView主要是分析方法的運(yùn)行時(shí)間以及被調(diào)用的次數(shù),在app啟動(dòng)過程中,如果方法花費(fèi)的時(shí)間過長,超過了繪制屏幕第一幀的時(shí)間(16ms),就會(huì)出現(xiàn)卡頓、甚至ANR(no response)等問題。
TraceView采集數(shù)據(jù)有兩種方法,一種是通過調(diào)用debug類,在你要跟蹤的地方調(diào)用Debug.startMethodTracing方法,結(jié)束的地方再次調(diào)用即可(此處不作重點(diǎn)介紹);還有一種方法是直接通過DDMS里面的start method profiling實(shí)現(xiàn)(對(duì)于冷啟動(dòng)無法采集)
二、實(shí)例講解
現(xiàn)在開始講start method profiling方法。
如圖,在DDMS里面選擇進(jìn)程(冷啟動(dòng)無進(jìn)程可選,所以只能檢查熱啟動(dòng)(進(jìn)程還在,只需啟動(dòng)mainactivity)),點(diǎn)擊start method profiling。
然后彈出的分析方式里面選擇默認(rèn)方式,點(diǎn)擊ok
start method profiling此時(shí)變黑,表示正在采集,執(zhí)行相關(guān)app操作,然后再次點(diǎn)擊start method profiling此時(shí)變紅,接著彈出如圖采集到的信息
時(shí)間面板
時(shí)間面板展示了每個(gè)線程的執(zhí)行情況,其中的[1]main即為ui主線程。
移動(dòng)到某個(gè)位置可以查看該點(diǎn)對(duì)應(yīng)的方法的執(zhí)行信息,點(diǎn)擊方法面板則會(huì)選中相應(yīng)的方法。
可以左鍵按住不放選中區(qū)域放大局部精細(xì)查看,不同方法用不同顏色標(biāo)注
方法面板:
方法面板展示了所有方法的執(zhí)行情況,點(diǎn)擊某個(gè)方法可以查看在對(duì)應(yīng)線程上的執(zhí)行時(shí)間區(qū)域,并會(huì)顯示其父方法及子方法。
每個(gè)方法包括如下信息列,可點(diǎn)擊某列進(jìn)行排序,從而確定產(chǎn)生性能問題的函數(shù):
Incl Cpu Time, Excl Cpu Time, Incl Real Time, Excl Real Time, Incl Cpu Time%, Excl Cpu Time%, Incl Real Time%, Excl Real Time%, Calls+RecurCalls/Total, Cpu Time/Call, Real Time/Call
所有的Time都是以毫秒計(jì)算。每列具體含義及作用如下:
a. Incl表示將所有子函數(shù)耗時(shí)也計(jì)算在內(nèi),Excl則表示不包括子函數(shù)的調(diào)用時(shí)間。對(duì)比可以確定耗時(shí)操作發(fā)生是自身還是子函數(shù)中。
b. Cpu Time表示占用cpu執(zhí)行的時(shí)間,Real Time包括Cpu Time以及等待、切換的時(shí)間等,所以一般都大于Cpu Time。對(duì)比可以判斷耗時(shí)操作是否在cpu執(zhí)行段內(nèi)。
c. 上面四個(gè)指標(biāo)對(duì)應(yīng)的%表示函數(shù)在總時(shí)間的占比。方便查看某個(gè)函數(shù)的時(shí)間占比。
d. Calls+RecurCalls/Total表示被外部調(diào)用次數(shù)+遞歸次數(shù)/總次數(shù)??梢圆榭凑{(diào)用次數(shù)是否符合自己預(yù)期。
e. Cpu Time/Call, Real Time/Call表示總的Cpu Time及Real Time與總調(diào)用次數(shù)的比例。查看每次調(diào)用的耗時(shí),一般可通過簡單此項(xiàng)確定每個(gè)函數(shù)的性能。
來張圖更直觀
測(cè)試方法:
找出圖中執(zhí)行時(shí)間及調(diào)用次數(shù)多的方法,進(jìn)行優(yōu)化
可參考此http://www.cnblogs.com/sunzn/p/3192231.html和https://www.youtube.com/watch?v=gk2G_FAESds&list=PLaYqF7AnyNPcllCrHZFNQrjGTPO8gCb28&index=66
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。