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."
下边还有搜索框,可以进行方法类等的搜索。