Traceview是Android平臺下的性能測試工具,它可以通過圖形化的方式讓我們瞭解我們要跟蹤的程序的性能,並且能具體到method。它包含了兩部分,一部分用於程序執行過程中採集數據,另一部分用於在程序執行完畢後對數據進行分析。
第一步採集數據
用戶可以選擇激活或者取消實時數據採集功能。當該功能激活以後,Traceview進程就會記錄下用戶程序每一次的函數調用和耗時,並將數據保存到SDCard上的一個二進制文件中。
在程序中調用android.os.Debug.startMethodTracing方法啓動實時數據採集,如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//啓動實時數據採集
Debug.startMethodTracing("liming");
}
protected void onStop() {
Debug.stopMethodTracing();//停止數據採集
super.onStop();
}
第二步分析數據
把SDCard上的二進制數據文件導出到你的電腦上,在Dos窗口上進入Android SDK的tools目錄,然後執行命令:
traceview c://test.trace
執行指令後將打開圖形化分析界面(界面內容說明如下)。
窗口的下半部分是對各個方法調用的彙總圖Profile Panel。
Exclusive time是該方法本身基本操作的時間(不包括子方法調用)。
Inclusive time是該方法調用所用的時間(包括子方法調用)。
列1:"Name"表示Method名。
雙擊Method名,可以看到在上半界面是時間軸面圖(Timeline Panel)看他的所消耗的時間段。(用粗的線段標註)。
雙擊Method名左邊的"+"展開後可以看到,該Method的"parents"和"children"
列2:"incl%"表示Method的Inclusive time在整個MethodTracing時間裏佔的百分比。
列3:"Inclusive"表示Inclusive time。
列4:"Excl%"表示Method的Exclusive time在整個MethodTracing時間裏佔的百分比。
列5:"Exclusive"表示Exclusive time。
列6:"Calls+RecurCalls/Total"表示對Method的調用次數(包括遞歸調用)。如:"14+0"表示14次非遞歸調用,0次遞歸調用.
列7:"time/calls"表示平均的調用時間(即Inclusive time/ total calls)。
注:如果方法A調用方法B那麼方法A稱爲方法B的"parents",方法B稱爲方法A的"children."
下邊還有搜索框,可以進行方法類等的搜索。