mcpField
N
native-app-performance

native-app-performance

github.com/steipete开发7.4k243 次安装1 周前更新
代码仓库

关于 native-app-performance

native-app-performance 是一项仅通过命令行记录和分析原生应用 Time Profiler 跟踪数据的技能。它面向开发者,可提取采样、符号化调用栈并排列应用热点,无需打开 Instruments。

主要功能

  1. 01通过附加进程或启动应用记录 Time Profiler
  2. 02从跟踪数据提取时间采样
  3. 03使用二进制文件和加载地址符号化调用栈
  4. 04排列应用中最活跃的帧

适用场景

  1. 01查找原生应用的性能热点
  2. 02分析指定的缓慢操作
  3. 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.py
record_time_profiler.sh
top_hotspots.py

详细介绍

原生应用性能(仅限 CLI)

目标:通过 xctrace 记录 Time Profiler,提取采样数据、符号化,并找出可能的热点,全程无需打开 Instruments。

快速开始(CLI)

  1. 记录 Time Profiler(附加到进程):
# Start app yourself, then attach
xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --attach <pid>
  1. 记录 Time Profiler(启动应用):
xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --launch -- /path/App.app/Contents/MacOS/App
  1. 提取时间采样数据:
scripts/extract_time_samples.py --trace /tmp/App.trace --output /tmp/time-sample.xml
  1. 获取用于符号化的加载地址:
# While app is running
vmmap <pid> | rg -m1 "__TEXT" -n
  1. 符号化并排列热点:
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