Android软件性能分析是Android开发人员所必备的技能之一,在软件开发过程中,想必很多读者都遇到过系统性能问题。而解决系统性能问题的几个主要步骤是:
- 测评:对系统进行大量有针对性的测试,以得到合适的测试数据。
- 分析系统瓶颈:分析测试数据,找到其中的hotspot(热点,即bottleneck)。
- 性能优化:对hotspot相关的代码进行优化。
本文主要讲如何使用TraceView性能测试工具。
Traceview简介
Traceview是Android平台特有的数据采集和分析工具,Traceview本身只是一个数据分析工具,而数据的采集则需要使用Android SDK中的Debug类或者利用DDMS工具。二者的用法如下:
- 开发者在一些关键代码段开始前调用Android SDK中Debug类的startMethodTracing函数,并在关键代码段结束前调用stopMethodTracing函数。这两个函数运行过程中将采集运行时间内该应用所有线程(注意,只能是Java线程)的函数执行情况,并将采集数据保存到/mnt/sdcard/下的一个文件中。开发者然后需要利用SDK中的Traceview工具来分析这些数据。
- 借助Android SDK中的DDMS工具。DDMS可采集系统中某个正在运行的进程的函数调用信息。对开发者而言,此方法适用于没有目标应用源代码的情况。
TraceView使用
主要讲解Android SDK中的DDMS工具
1.打开工具
2.TraceView界面
Traceview界面比较复杂,其UI划分为上下两个面板,
- Timeline Panel(时间线面板)
- Profile Panel(分析面板)。
Timeline Panel又可细分为左右两个Pane:
- 左边Pane显示的是测试数据中所采集的线程信息。
- 右边Pane所示为时间线,时间线上是每个线程测试时间段内所涉及的函数调用信息。
Profile Panel是Traceview的核心界面,其内涵非常丰富。
对开发者而言,一定要了解Profile Panel中各列的含义。
3.如何利用Traceview来查找hotspot
- 一类是调用次数不多,但每次调用却需要花费很长时间的函数。
选择按Cpu Time/Call进行降序排序(从上之下排列,每项的耗费时间由高到低)
- 一类是那些自身占用时间不长,但调用却非常频繁的函数。
点击Call/Recur Calls/Total列,使之按降序排列。关注点放在那些调用频繁并且占用资源较多的函数。