Android性能分析-traceview
来源:互联网 发布:mac上怎么使用git 编辑:程序博客网 时间:2024/06/06 09:05
TraceView简介
traceview主要Android平台特有的数据采集和分析工具,主要用于分析Android应用程序的瓶颈。而traceview本身只是一个数据分析工具,数据采集则需要SDK中Debug类或者是DDMS中的工具。
简单描述:traceview就是分析一个应用进程中每个线程(具体可以定位到某个方法)的耗时情况,即占用cpu时间。
用法
- 对于已知代码的程序:
对于一些关键代码我们想测试其执行过程中占用cpu的时间时,可以在该关键代码前调用Android SDK中Debug类的startMethonTracing函数(android.os.Debug.startMethodTracing())开始采集数据,在关键代码后面调用Debug的stopMethodTracing函数(android.os.Debug.stopMethodTracing())停止采集。采集的数据保存在sd卡中,然后使用sdk/tools/traceview分析这些数据。
- 对于未知源码或者不想使用代码
在DDMS中有一个工具:进行采集和分析,最好控制操作时间在几秒钟内,确保是小范围分析
使用步骤:1. 选中某个进程, 2. 点击上面工具, 3. 操作app 4. 点击上面工具结束采集 5. eclipse会自动跳转到界面的数据采集图
traceview工具面板介绍
有两方面用途:
1 查看跟踪代码的执行时间,分析哪些是耗时操作
2 可以用于跟踪方法的调用,尤其是Android Framework层的方法调用关系
获取方法的调用顺序
- 在traceview中搜索响应的方法名不能使用大写字母
- 搜索出的方法会自动展开,其中包含Parents 和 Children 两组信息
- 点击Parents下的方法名,直接跳转到调用当前的方法处。Children相反
Traceview 面板分上下两部分
上面是时间轴面板 (Timeline Panel)
左侧显示的是线程信息
右侧黑色部分是显示执行时间段、白色是线程暂停时间段,
右侧鼠标放在上面会出现时间线纵轴,在顶部会显示当前时间线所执行的具体函数信息
下面是分析面板(Profile Panel) - 每一列内容
Inclusive time - 函数本身运行花费时间 + 函数调用其他函数时间
Exclusive time - 函数本身运行花费时间。
Calls + RecurCall/Total 调用 + 重复调用次数 / 函数总调用次数
Cpu Time/Call 总的Cpu时间与总的调用次数之比
如何进行具体的分析
有两个问题需要解决:
- 如何定位到所关心的地方?
上面只是介绍了如何使用TraceView且有两种用法,但是有时使用第一种方式范围又不太精确,使用第二种添加代码的方式,可能有些地方又监听不到。这种情况可以尝试把开始或者结束放到延迟线程中,延迟一段时间在执行开始或者结束。
- 如何查找出哪些地方比较耗时?
TraceView罗列出了是所有监听到的方法,当然也包括Android系统很多方法的耗时,如何在这么多方法里面查找到自己关心的? 可以通过TraceView 底部的find 来查找,通常Android app都是有包名的,可以先针对某些关心的列排序后,在通过包名进行一个个查找,这些就省去自己筛选出自己app 方法耗时排行的时间。
如:
另外:
上图中的每项都包含两部分:parents和child。其中parents代表调用该方法的方法,child代表该方法调用的其他方法,如图:
从图中可以分析出具体方法的耗时情况及调用次数,然后有针对性的去检查该方法。
参考:http://blog.csdn.net/androiddevelop/article/details/8223805
必读介绍traceview的文章:http://blog.csdn.net/innost/article/details/9008691
- TraceView[Android性能分析]
- Android性能分析-traceview
- android TraceView分析android 性能
- android性能分析工具 traceview
- TraceView分析android应用性能
- Android性能分析工具-TraceView
- Android性能分析工具TraceView
- 性能分析工具 Android TraceView
- Android 性能分析工具TraceView
- android TraceView性能分析与性能优化
- Android性能分析之TraceView分析
- android-sdk工具使用traceview性能分析
- Android性能分析工具——TraceView
- android性能分析工具-TraceView参数解释
- Android应用性能分析调试工具 TraceView
- Android性能分析优化 - TraceView介绍
- Android性能分析工具——TraceView
- 正确使用Android性能分析工具 - TraceView
- 简单端口扫描器Python实现(附Python-Nmap简单使用)
- java 几种简单的排序(插入排序,冒泡排序,选择排序)
- Android中的Bitmap.Config ARGB_8888
- 禁止StatusBar展开
- 多线程(三) 控制线程之join线程
- Android性能分析-traceview
- C#入门8.2——方法的声明及调用(2)
- java引用的类型
- 快速解析数据结构
- jQuery.nicescroll美化滚动条
- 算法学习—费用流
- ReseverLink
- easyui中如何禁用tab选项卡的f5以及enter建
- Flask Web 开发 邮件功能