性能优化之Traceview工具的使用

收集了一些有关android性能调优的方法,主要是对开发文档的探究。下面是我做的一些有关traceview的一些总结。
Android系统性能调优工具使用
在软件开发过程中,系统性能问题是一直的关注点。而解决系统性能问题的几个主要步骤是:
- 测评:对系统进行大量有针对性的测试,以得到合适的测试数据。
- 分析系统瓶颈:分析测试数据,找到其中的hotspot(热点,即bottleneck)。
- 性能优化:对hotspot相关的代码进行优化。
由上述步骤可知,性能优化的目标对象是hotspot。那么如何找到瓶颈点呢?就需要通过对一些工具的使用。下面就介绍一种工具Traceview。
Traceview是Android平台特有的数据采集和分析工具,它主要用于分析Android中应用程序的hotspot。Traceview本身只是一个数据分析工具,而数据的采集则需要使用Android SDK中的Debug类或者利用DDMS工具。二者的用法如下:
Debug类:
•在一些关键代码段开始前调用Android SDK 中Debug类的startMethodTracing函数,并在关键代码段结束前调用stopMethodTracing函数。这两个函数运行过程中将采集运行时间内该应用所有线程(注意,只能是Java线程)的函数执行情况,并将采集数据保存到/mnt/sdcard/下的一个文件中。开发者然后需要利用SDK中的Traceview工具来分析这些数据。
•借助Android SDK中的DDMS工具。DDMS可采集系统中某个正在运行的进程的函数调用信息。对开发者而言,此方法适用于没有目标应用源代码的情况。DDMS工具中Traceview的使用如图1-1所示。方法:选中应用进程,点击start method profiling。会出现如下的界面:
Traceview界面

traceview界面

该界面主要分为两个版面:
timeline时间线面板 描述每个线程和方法开始和停止

profiling概览面板 方法内部发生行为的一个概览。(比如,方法调用)

profiling界面

点开某个name项,会展开包含parent和children的项,并以不同的背景颜色显示。此刻我们就可以对不同方法占用的cpu时间进行分析,以找出瓶颈点。此刻完成了系统性能分析的第二步,接下来就是使用代码优化技术进行优化了。

点击后出现的

下面对面板上的要素进行分析:
Profile Panel是Traceview的核心界面,其内涵非常丰富。它主要展示了某个线程(先在Timeline Panel中选择线程)中各个函数调用的情况,包括CPU使用时间、调用次数等信息。而这些信息正是查找hotspot的关键依据。所以,对开发者而言,一定要了解Profile Panel中各列的含义。笔者总结了其中几个重要列的作用,如表1-1所示:

下面对 Profile Panel中的各列作用进行说明

列名描述
Name该线程运行过程中所调用的函数名
Incl Cpu Time某函数占用的CPU时间,包含内部调用其它函数的CPU时间
Excl Cpu Time某函数占用的CPU时间,但不含内部调用其它函数所占用的CPU时间
Incl Real Time某函数运行的真实时间(以毫秒为单位),内含调用其它函数所占用的真实时间
Excl Real Time某函数运行的真实时间(以毫秒为单位),不含调用其它函数所占用的真实时间
Call+Recur Calls/Total某函数被调用次数以及递归调用占总调用次数的百分比
Cpu Time/Call某函数调用CPU时间与调用次数的比。相当于该函数平均执行时间
Real Time/Call同CPU Time/Call类似,只不过统计单位换成了真实时间

另外,每一个Time列还对应有一个用时间百分比来统计的列(如Incl Cpu Time列对应还有一个列名为Incl Cpu Time %的列,表示以时间百分比来统计的Incl Cpu Time)。

一般来说,瓶颈点包含两种类型的函数:
• 一类是调用次数不多,但每次调用却需要花费很长时间的函数。
• 一类是那些自身占用时间不长,但调用却非常频繁的函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值