您的位置:首页 > 移动开发 > Android开发

性能优化之Traceview工具的使用

2015-09-16 12:54 155 查看
收集了一些有关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界面



该界面主要分为两个版面:

timeline时间线面板 描述每个线程和方法开始和停止

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)。

一般来说,瓶颈点包含两种类型的函数:

• 一类是调用次数不多,但每次调用却需要花费很长时间的函数。

• 一类是那些自身占用时间不长,但调用却非常频繁的函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息