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 Editor 中打开您的 Android 项目。
  2. 在 Android 平台的构建设置窗口中,确保选中了开发版本选项。
  3. 点击 Player Settings,并将 Stripping Level 属性设置为 Disabled