Android NDK开发详解调试和性能分析之Simpleperf

本文详细介绍了如何在AndroidNDK中使用Simpleperf进行CPU性能分析,包括查找执行时间最长的共享库、函数、线程和对象模块,以及了解函数调用关系。同时指导了如何针对Unity应用进行性能剖析,强调了使用调试符号的重要性。
摘要由CSDN通过智能技术生成

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 构建的应用进行性能剖析,请确保使用调试符号构建应用,具体步骤如下:

在 Unity 编辑器中打开 Android 项目。
在适用于 Android 平台的 Build Settings 窗口中,确保选中 Development Build 选项。
点击 Player Settings,并将 Stripping Level 属性设置为 Disabled。

本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。

最后更新时间 (UTC):2021-04-23。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五一编程

程序之路有我与你同行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值