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 构建的应用,请务必按照以下步骤构建包含调试符号的应用
- 在 Unity 编辑器中打开您的 Android 项目。
- 在 Android 平台的Build Settings(构建设置)窗口中,确保选中 Development Build(开发版本)选项。
- 点击 Player Settings(播放器设置),并将 Stripping Level(剥离级别)属性设为 Disabled(已停用)。