65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Eclipse 中使用 Android Traceview

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.69/5 (6投票s)

2014 年 1 月 15 日

CPOL

3分钟阅读

viewsIcon

15873

如何在 Eclipse 中使用 Android Traceview。

解决 Android 应用程序性能问题的最佳方法是通过跟踪执行来对应用程序进行性能分析。通过这种方式,您可以根据真实数据做出改进决策,并检测应用程序中的瓶颈。在 Android SDK 中,Debug 对象处理性能分析,而 TraceView 实用程序用于查看生成的跟踪文件。我将描述如何使用 Eclipse Android SDK 插件中包含的工具进行性能分析,但您也可以使用 traceview 命令。

请记住,.trace 文件可能会变得很大,因此请小心仅跟踪应用程序中有问题的部分。如果您不知道要分析什么,您可以在第一次时进行大规模跟踪,稍后深入到特定部分。此外,在跟踪方法时,执行速度会变慢,因此您应该只将跟踪的执行时间与另一个跟踪时间进行比较。

从代码进行性能分析

从代码进行性能分析允许您分析您已经怀疑有问题的部分。要从代码进行性能分析,

  1. 将调用添加到您想要开始和停止性能分析的 Debug 类方法中。要在任何方法中开始性能分析,请添加以下方法调用
    Debug.startMethodTracing("logname");

    要停止性能分析,请添加以下调用

    Debug.stopMethodTracing();

    这些调用不需要在同一个方法中,但请确保会到达 stopMethodTracing。此外,您的应用程序必须有权写入 SD 卡,否则您将收到异常 Unable to open trace file “/sdcard/logcat.trace” : Permission denied

  2. 启动应用程序并执行有问题的操作以进行跟踪。当性能分析开始和停止时,将在 Logcat 输出中显示一条消息,并且将在设备的根文件系统中创建一个 logname.trace 文件。
  3. 导航到设备的 SD 卡的根目录,并将 .trace 文件复制到桌面。使用 Eclipse 打开 .trace 文件,它将在跟踪工具中显示。请参阅下面的分析 .trace 文件部分以检查结果。

从 Eclipse 进行性能分析

在调试期间进行性能分析可以帮助您查明在执行期间随机出现的问题,或者您不确定哪些代码行导致了该问题。

  1. 在 DDMS 视图中,单击开始方法性能分析按钮。

    SNAGHTML69d982c

  2. 再次按下相同的按钮(停止方法性能分析)以停止性能分析。结果将立即显示在 Eclipse 中。

分析 .trace 文件

打开 .trace 文件时,将显示以下窗口

image

在顶部,每个线程都有自己的时间线。在此应用程序中,只有一个主线程,其他线程是系统线程。在我看来,最有趣的列是

  • Incl CPU %:此方法使用的总 CPU 时间的百分比,包括所有子方法的执行时间。
  • Incl CPU 时间:此方法使用的 CPU 时间(以毫秒为单位),包括所有子方法的执行时间。
  • 调用 + 递归调用/总数:父方法对子方法的调用次数(以及递归调用)/对整个 .trace 文件的该方法的总调用次数。

您可以深入研究任何方法以查看子方法并对其进行分析。在这种情况下,深入研究 generateRandomNumber 方法表明子方法 saveRandomNumber 占用了大部分执行时间。事实上,如果您查看“调用”列,您可以看到它被调用了 1000000 次。该方法为测试调用了多次,但对于实际的性能分析案例,这是您应该注意的地方:可以减少调用次数,或者优化该方法的执行。

© . All rights reserved.