概述
TraceView是Android平台配备一个很好的性能分析工具,它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。主要用于分析Android中应用程序中的hotspot,TraceView 本身只是一个数据分析工具,而数据的采集则需要使用 Android SDK 中的 Debug 类或者利用 DDMS 工具。
用法
TraceView有两种使用方法:
1:通过Android SDK 中Debug类来追踪代码的执行性能,如下:
// 在自己想要开始调试的地方start
Debug.startMethodTracing(“rongzitong.trace”);
// 在关键代码结束的地方stop
Debug.stopMethodTracing();
此种方式,是通过源码中调用,必须要知道源码才可使用。这两个函数运行过程中将采集运行时间内该应用所有线程(注意,只能是 Java 线程)的函数执行情况,并将采集数据保存到 /mnt/sdcard/ 下的一个文件中。开发者然后需要利用 SDK 中的 TraceView 工具来分析这些数据。
2:通过Andorid 自带的DDMS来调用,如下:
DDMS 中 TraceView 使用示意图如下,调试人员可以通过选择 Devices 中的应用后,点击
按钮 Start Method Profiling(开启方法分析)和点击
Stop Method Profiling(停止方法分析)
分析trace文件
上述方法后,会得到记录的trace文件,使用DDMS打开,如下:
traceView界面比较复杂,其UI划分为上下两个面板,上面为TimeLine(时间线面板),下面为Profile
Panel (分析面板)。
时间线面板又分为左右两个pane:
● 左边 Pane 显示的是测试数据中所采集的线程信息。由图可知,本次测试数据采集了 main 线程,传感器线程和其它系统辅助线程的信息。
● 右边 Pane 所示为时间线,时间线上是每个线程测试时间段内所涉及的函数调用信息。这些信息包括函数名、函数执行时间等。由图可知,main 线程对应行的内容非常丰富,而其他线程在这段时间内干得工作则要少得多。
另外,开发者可以在时间线 Pane 中移动时间线纵轴。纵轴上边将显示当前时间点中某线程正在执行的函数信息。
下半部分,Profile Panel (分析面板)为traceView的核心界面,主要展示了某个线程中各个函数调用的情况,包括CPU使用时间,调用次数等。而这些信息正是查找 hotspot 的关键依据,所以对于开发者来说一定要了解Profile Panel中各列的含义。
了解完 TraceView 的 UI 后,现在介绍如何利用 TraceView 来查找 hotspot。一般而言,hotspot 包括两种类型的函数:
● 一类是调用次数不多,但每次调用却需要花费很长时间的函数。
● 一类是那些自身占用时间不长,但调用却非常频繁的函数。
通过以上的列名所代表的函数,我们可以分析出类中方法执行时所消耗的CPU,进而对其进行优化。