Simpleperf

Android Studio 包含一个 Simpleperf 的图形前端,如 使用 CPU 分析器检查 CPU 活动 中所述。大多数用户更喜欢使用它,而不是直接使用 Simpleperf。

如果您更喜欢使用命令行,Simpleperf 是一款通用的命令行 CPU 分析工具,包含在适用于 Mac、Linux 和 Windows 的 NDK 中。

如需完整文档,请从 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 平台的 构建设置 窗口中,确保选中 开发构建 选项。
  3. 单击 播放器设置 并将 剥离级别 属性设置为 禁用