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图,当我们点击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
- traceview
- Traceview
- TraceView
- TraceView
- TraceView总结
- TraceView使用方法
- traceView使用
- TraceView总结
- TraceView总结
- TraceView issue
- TraceView总结
- Android Traceview
- TraceView总结
- Android Traceview
- TraceView介绍
- traceview 用法
- TraceView基本知识
- TraceView界面
- 【HDU 1203】 I NEED A OFFER!(01背包)
- Codeforces 427C - Checkposts 极大连通分量Tarjan算法模板题(STL实现)
- iOS开发--下载安装cocoapods的详细教程、cocoapods使用第三方库
- Android TextView限制字数属性
- 错误:MySQL多列identity约束(VS2012)
- TraceView
- UVAOJ1586题解
- AsycTask----MyAsycTask类
- BMP文件与像素操作(glReadPixels,glDrawPixels和glCopyPixels应用举例)
- NET和java的RSA互通,仅此而已
- 通过addDataScheme("file") 浅析android事件过滤策略
- Maven POM文件
- Expanding Rods
- Spring过滤参数中的xss