一、介紹
成都創新互聯公司專注于企業全網營銷推廣、網站重做改版、永城網站定制設計、自適應品牌網站建設、H5建站、商城網站建設、集團公司官網建設、成都外貿網站建設、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為永城等各大城市提供網站開發制作服務。
TraceView是一款性能分析工具,可以進行數據采集和分析,可以以圖形化的方式讓我們了解要跟蹤的程序并且能得到相關method。本文只講解在app啟動時候TraceView的功能,當然,對于app運行過程中出現的卡頓,延遲現象,也可以進行分析。
TraceView主要是分析方法的運行時間以及被調用的次數,在app啟動過程中,如果方法花費的時間過長,超過了繪制屏幕第一幀的時間(16ms),就會出現卡頓、甚至ANR(no response)等問題。
TraceView采集數據有兩種方法,一種是通過調用debug類,在你要跟蹤的地方調用Debug.startMethodTracing方法,結束的地方再次調用即可(此處不作重點介紹);還有一種方法是直接通過DDMS里面的start method profiling實現(對于冷啟動無法采集)
二、實例講解
現在開始講start method profiling方法。
如圖,在DDMS里面選擇進程(冷啟動無進程可選,所以只能檢查熱啟動(進程還在,只需啟動mainactivity)),點擊start method profiling。
然后彈出的分析方式里面選擇默認方式,點擊ok
start method profiling此時變黑,表示正在采集,執行相關app操作,然后再次點擊start method profiling此時變紅,接著彈出如圖采集到的信息
時間面板
時間面板展示了每個線程的執行情況,其中的[1]main即為ui主線程。
移動到某個位置可以查看該點對應的方法的執行信息,點擊方法面板則會選中相應的方法。
可以左鍵按住不放選中區域放大局部精細查看,不同方法用不同顏色標注
方法面板:
方法面板展示了所有方法的執行情況,點擊某個方法可以查看在對應線程上的執行時間區域,并會顯示其父方法及子方法。
每個方法包括如下信息列,可點擊某列進行排序,從而確定產生性能問題的函數:
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都是以毫秒計算。每列具體含義及作用如下:
a. Incl表示將所有子函數耗時也計算在內,Excl則表示不包括子函數的調用時間。對比可以確定耗時操作發生是自身還是子函數中。
b. Cpu Time表示占用cpu執行的時間,Real Time包括Cpu Time以及等待、切換的時間等,所以一般都大于Cpu Time。對比可以判斷耗時操作是否在cpu執行段內。
c. 上面四個指標對應的%表示函數在總時間的占比。方便查看某個函數的時間占比。
d. Calls+RecurCalls/Total表示被外部調用次數+遞歸次數/總次數。可以查看調用次數是否符合自己預期。
e. Cpu Time/Call, Real Time/Call表示總的Cpu Time及Real Time與總調用次數的比例。查看每次調用的耗時,一般可通過簡單此項確定每個函數的性能。
來張圖更直觀
測試方法:
找出圖中執行時間及調用次數多的方法,進行優化
可參考此http://www.cnblogs.com/sunzn/p/3192231.html和https://www.youtube.com/watch?v=gk2G_FAESds&list=PLaYqF7AnyNPcllCrHZFNQrjGTPO8gCb28&index=66