TraceView

来源:互联网 发布:python生成一组随机数 编辑:程序博客网 时间:2024/06/05 09:09

Android TraceView

TraceView是一个分析代码执行时间的图形化工具,使用它可以帮助我们调试应用以及分析应用性能

如何使用TraceView

  • 通过Android Device Monitor。进入Android Device Monitor之后,打开DDMS,选择你的应用进程,然后点击“Start Method Profiling”按钮开始,再次点击按钮TraceView工作结束。DDMS会自动加载TraceView图。
  • 通过添加Trace code。在你的应用代码块的开始和结束分别添加android.os.Debug.startMethodTracing(String traceName)以及android.os.Debug.stopMethodTracing(),当运行结束后,就会有一个traceName.trace文件在/sdcard目录中生成。然后用Android Device Monitor打开traceName.trace文件即可。注意:需要在应用中添加WRITE_EXTERNAL_STORAGE权限
        Debug.startMethodTracing("perfTrace");        mProgressBar = (ProgressBar) findViewById(R.id.id_progressbar);        mHideHandler = new Handler() {            @Override            public void dispatchMessage(Message msg) {                super.dispatchMessage(msg);                if (msg.what == MSG_HIDE)                   mProgressBar.setVisibility(View.GONE);                Debug.stopMethodTracing();            }        };

分析TraceView

TraceView图解析

TraceView图

这是我们通过上文中的代码得到的TraceView图,当我们点击Name列中的方法名时,会出现该方法的Parents以及Children。

这里写图片描述


  • Parents表示调用这个方法的方法,也就是父方法
  • Children表示这个方法中调用的其他方法,也就是子方法
  • Incl Cpu Time %:该方法的执行时间(self + Children)占Trace代码段的执行之间的比重。
  • Incl Cpu Time:该方法的执行时间(self + Children),单位ms
  • Excl Cpu Time %:该方法self执行时间占Trace代码段的执行之间的比重
  • Excl Cpu Time:该方法self执行时间
  • Incl Real Time %:该方法的执行经历的墙上时间(self + Children)占Trace代码段的经历的墙上时间的比重
  • Incl Real Time:该方法的执行经历的墙上时间(self + Children)占Trace代码段的执行之间的比重。
  • Excl Real Time %:该方法的执行经历的墙上时间(self)占Trace代码段的经历的墙上时间的比重
  • Excl Real Time:该方法的执行经历的墙上时间(self),不包括子函数的经历时间
  • Calls + Recur Calls/Total:方法的调用次数+递归调用次数
  • Cpu Time/Call:方法平均每次执行所消耗的Cpu时间 = Incl Cpu Time / Calls
  • Real Time/Call:方法平均每次执行所经历的墙上时间 = Incl Real Time / Calls

我们在分析方法执行时,应重点关注方法执行的相对耗时(也就是比重),以及方法调用次数等。方法的绝对执行时间受手机性能影响,只作参考。通常我们通过TraceView得到的只是Java层的方法执行情况,还有一个startNativeTracing,只能在模拟器上使用,但是功能更为强大,可以Trace kernel执行等。

TraceView文件生成html

在TraceView图中,我们不能搜索函数,为了便于分析问题,我们可以利用sdk/platform-toos/dmtracedump工具将traceView得到的*.trace文件转化为html文件,使用如下命令

D:\android_debug\Traceview>dmtracedump -h perfTrace.trace > perfTrace.html

得到的html图,可以用chrome或者猎豹等浏览器打开

这里写图片描述

TraceView文件导出函数调用图

更为强大的是我们可以利用dmtracedump工具生成函数调用图,不过需要安装Graphviz(帮助生成函数调用图),安装方法很简单,Google下Graphviz即可,安装以后添加环境变量。这样我们就可以用dmtracedump工具生成函数调用图了。

D:\android_debug\Traceview>dmtracedump -g perfTrace.png perfTrace.trace

这里写图片描述

小结

使用TraceView不仅可以分析应用性能问题,还可以帮助我们学习代码的workflow等。

0 0
原创粉丝点击