Simpleperf

Android Studio 包含 Simpleperf 的图形前端,记录在使用 CPU 性能剖析器检查 CPU 活动中。大多数用户更喜欢使用该图形前端,而不是直接使用 Simpleperf。

如果您更喜欢使用命令行,可以直接使用 Simpleperf。Simpleperf 是一个通用的命令行 CPU 性能剖析工具,包含在面向 Mac、Linux 和 Windows 的 NDK 中。

如需查看完整的文档,请先阅读 Simpleperf 自述文件

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