传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229

        TraceView是Android平台下的性能测试工具,它以图形化的方式向我们展现待跟踪程序的性能,并且能具体到method。TraceView包含两个部分,一部分用于程序执行过程中采集数据,另一部分用于在程序执行完毕后对数据进行分析。

1采集数据

        用户可以选择激活或者取消实时数据采集功能。当该功能激活以后,TraceView进程就会记录下用户程序每一次的方法调用和耗时。并将数据保存到SDCard上的一个二进制文件中。

        在程序中调用android.os.Debug.startMethodTracing()方法启动实时数据采集,代码如下:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //启动实时数据采集 "/sdcard/calc.trace"
        Debug.startMethodTracing("calc");
    }
    protected void onStop(Bundle savedInstanceState) {
        //停止实时数据采集
        Debug.stopMethodTracing();
        super.onStop();
    }

2分析数据

        把sdcard的二进制数据文件导出到电脑上,在Dos窗口上进入Android SDK的tools目录,然后执行命令:
        traceview c:\\calc.trace
        执行指令后将打开图形化分析界面。

        窗口的上半部分是时间轴面图(Timeline Panel),右上角的值为方法执行时间的总和。窗口的下半部分是对各个方法调用的汇总图(Profile Panel)。
        界面上方的尺子代表了MethodTracing的时间段(从Debug.startMethodTracing(“”)到Debug.stopMethodTracing()的时间)。

列的名称 列的涵义
Name 方法的名称
Incl % 执行方法总时间在整个MethodTracing时间里所占百分比
Inclusive 执行方法总时间
Excl % 执行方法基本操作的时间(不包括调用子方法的耗时)在整个MethodTracing时间里所占百分比
Exclusive 执行方法基本操作的时间(不包括调用子方法的耗时)
Calls+Rec 执行方法的次数(如:”4+0″表示4次非递归调用,0次递归调用;”3/2″表示3次非递归调用,2次递归调用。)
Cpu Time 执行方法的平均时间(即执行方法总时间/执行方法的次数)       
        注:如果方法A调用方法B,那么方法A称为方法B的”parents”,方法B称为方法A的”children”。最下边的搜索框(Find:),可以进行方法类等搜索。

版权声明:本文为innosight原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/innosight/archive/2013/05/28/3271235.html