多语言展示
当前在线:139今日阅读:19今日分享:20

性能分析工具TraceView

应用性能优化的工作对象就是应用的耗时瓶颈,只有先定位瓶颈,针对应用中最耗时的部分进行优化,才能有效提高性能,否则,优化效果必然事倍功半。 TraceViewTraceView是Android平台下的一款数据分析工具,结合Android SDK中的Debug类或DDMS工具进行数据采集,TraceView可以具体分析出每个method的耗时情况。
工具/原料
1

台式/笔记本电脑一台

2

电脑上安装了Android studio 或在Eclipse

方法/步骤
1

(1)    Debug类采集数据如果在一段代码前后加上Debug.startMethodTracing()和stopMethodTracing(),系统会采集这段代码运行时间段内应用中所有Java线程的函数执行情况,并将数据保存在/sdcard/dmtrace.trace中。trace文件可通过Eclipse中的TraceView工具打开。Debug.startMethodTracing();doSomething();Debug.stopMethodTracing();

2

(2)    DDMS采集数据和TraceView分析DDMS可以采集系统中某个正在运行的进程的函数调用信息,现以分析Calendar应用启动速度为例,介绍DDMS采集数据和TraceView分析方法:(a)    选中需要调试的进程,点击Start Method Profiling按钮启动数据采集;

3

(b)    在手机上进行耗时操作;(c)点击Stop Method Profiling结束数据采集

4

(d)    观察DDMS自动打开的数据采集文件,分析耗时的函数;

5

(e)    分析trace文件数据采集完成后,系统会自动将数据保存为一个trace文件。trace文件可通过eclipse直接浏览,也可通过命令行,用sdk/tools/traceview.bat工具打开。trace文件打开后的内容如上图所示。整个文件分成三部分,文件左上角显示采集的线程信息,由上图可知,本次采集的线程包括main线程和2个其它处理异步任务的辅助线程。文件右上角显示时间线,时间线上是每个线程测试时间段内所涉及的函数调用信息。文件下侧是最核心的Profile界面,显示了选中线程(com.android.calendar)中各个函数的调用耗时情况,包括CPU时间、调用次数、时间和次数的百分比等。Profile界面中各列的含义如下表所示:列名                      描述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类似,只不过统计单位换成了真实时间分析trace文件时,可以将数据按某一列降序排序,从而快捷定位耗时操作:如果查找哪些函数单次执行时间长,可将Cpu Time/Call按降序排列;如果查找哪些函数调用次数过多,可将Call+Recur Calls/Total按降序排列;如果查找哪些函数总执行时间长,可将Incl Cpu Time按降序排列。上图按照Incl Cpu Time降序排序,排在最上面的日历应用中的函数是onCreate,即日历启动过程中onCreate是耗时瓶颈。点击该条目,可以进入该函数的详情界面进一步分析该函数具体耗费时间的详情。

6

在onCreate的详情界面中,Parents显示调用当前函数(onCreate)的函数列表,Children显示被当前函数(onCreate)调用的函数列表,由上图可知,onCreate耗时占整个测试过程的19.7%,onCreate中65.8%的时间耗费在setContentView中,花费的时间为499ms。这些数据可说明,Calendar的启动耗时在应用上的瓶颈是加载布局,需要重点优化Calendar首页的布局文件。

注意事项

通过Android studio和Eclipse中的ADT组件可以使用此种调试方法。

推荐信息