关于 native-app-performance
native-app-performance 是一项仅通过命令行记录和分析原生应用 Time Profiler 跟踪数据的技能。它面向开发者,可提取采样、符号化调用栈并排列应用热点,无需打开 Instruments。
主要功能
- 01通过附加进程或启动应用记录 Time Profiler
- 02从跟踪数据提取时间采样
- 03使用二进制文件和加载地址符号化调用栈
- 04排列应用中最活跃的帧
适用场景
- 01查找原生应用的性能热点
- 02分析指定的缓慢操作
- 03无需打开 Instruments 分析跟踪数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ steipete/ agent-scripts --skill native-app-performance安装后在 Claude Code 中输入/native-app-performance确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/extract_time_samples.pyrecord_time_profiler.shtop_hotspots.py详细介绍
原生应用性能(仅限 CLI)
目标:通过 xctrace 记录 Time Profiler,提取采样数据、符号化,并找出可能的热点,全程无需打开 Instruments。
快速开始(CLI)
- 记录 Time Profiler(附加到进程):
# Start app yourself, then attach
xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --attach <pid>
- 记录 Time Profiler(启动应用):
xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --launch -- /path/App.app/Contents/MacOS/App
- 提取时间采样数据:
scripts/extract_time_samples.py --trace /tmp/App.trace --output /tmp/time-sample.xml
- 获取用于符号化的加载地址:
# While app is running
vmmap <pid> | rg -m1 "__TEXT" -n
- 符号化并排列热点:
scripts/top_hotspots.py --samples /tmp/time-sample.xml \
--binary /path/App.app/Contents/MacOS/App \
--load-address 0x100000000 --top 30
工作流说明
- 务必确认分析的是正确的二进制文件(本地构建版本还是
/Applications中的版本)。对于--launch,优先使用二进制文件的直接路径。 - 采集期间务必触发耗时路径(打开/关闭菜单、刷新等)。
- 如果调用栈为空,请延长采集时间或避开空闲时段。
xcrun xctrace help record和xcrun xctrace help export会显示正确的标志。
包含的脚本
scripts/record_time_profiler.sh:通过附加到进程或启动应用来记录。scripts/extract_time_samples.py:从跟踪记录中导出时间采样 XML。scripts/top_hotspots.py:对应用的栈帧进行符号化并排列靠前的热点。
注意事项
- 由于 ASLR,必须使用
vmmap获取运行时的__TEXT加载地址。 - 如果使用新构建版本,请更新
--binary路径;符号必须与跟踪记录匹配。 - 仅使用 CLI 的工作流:如果通过
atos完成调用栈符号化,则无需打开 Instruments。
评论
支持 Markdown