Simpleperf

Android Studio 包含 Simpleperf 的图形前端,文档参见使用 CPU Profiler 检查 CPU 活动。大多数用户会优先使用它,而非直接使用 Simpleperf。

如果您偏好使用命令行,Simpleperf 是 NDK 中包含的一款多功能命令行 CPU 分析工具,适用于 Mac、Linux 和 Windows。

如需完整文档,请从 Simpleperf 的README 开始。

Simpleperf 使用技巧和实用示例

如果您刚开始使用 Simpleperf,这里有一些您可能会觉得特别有用的命令。如需更多命令和选项,请参阅Simpleperf 命令和选项参考

查找执行时间最长的共享库

您可以运行此命令,查看哪些 .so 文件占用了最多的执行时间百分比(基于 CPU 周期数)。这是开始性能分析会话时运行的第一个好命令。

$ simpleperf report --sort dso

查找执行时间最长的函数

确定执行时间主要花在哪一个共享库后,您可以运行此命令来查看花在该 .so 文件函数上的时间百分比。

$ simpleperf report --dsos library.so --sort symbol

查找线程花费的时间百分比

.so 文件中的执行时间可能分散到多个线程中。您可以运行此命令,查看每个线程中花费的时间百分比。

$ simpleperf report --sort tid,comm

查找对象模块花费的时间百分比

找到执行时间主要花在哪些线程后,您可以使用此命令来分离出这些线程中执行时间最长的对象模块。

$ simpleperf report --tids threadID --sort dso

查看函数调用之间的关系

调用图直观地呈现了 Simpleperf 在分析会话期间记录的堆栈跟踪。

您可以使用 report -g 命令输出调用图,查看其他函数调用了哪些函数。这对于确定一个函数本身是否缓慢,或是否因为其调用了一个或多个缓慢的函数而导致缓慢,非常有用。

$ simpleperf report -g

您也可以使用 Python 脚本 report.py -g 来启动显示函数的可交互工具。您可以点击每个函数,查看在其子函数中花费的时间。

分析使用 Unity 构建的应用

如果您正在分析使用 Unity 构建的应用,请务必按照以下步骤构建包含调试符号的应用

  1. 在 Unity 编辑器中打开您的 Android 项目。
  2. 在 Android 平台的Build Settings(构建设置)窗口中,确保选中 Development Build(开发版本)选项。
  3. 点击 Player Settings(播放器设置),并将 Stripping Level(剥离级别)属性设为 Disabled(已停用)。