mcpField
G
guide-swiftui-performance-audit

guide-swiftui-performance-audit

github.com/prisma-labs-dev测试与质量349495 次安装5 周前更新
代码仓库

关于 guide-swiftui-performance-audit

guide-swiftui-performance-audit 是一项诊断 SwiftUI 性能问题的工作流指南,面向开发者从代码审查开始,并在证据不足时收集运行时分析数据。它涵盖问题分类、修复建议和前后验证。

主要功能

  1. 01按症状分类性能问题
  2. 02从代码着手检查常见问题
  3. 03指导收集运行时分析证据
  4. 04提出针对性修复建议
  5. 05依据基线验证改动

适用场景

  1. 01排查滚动卡顿或掉帧
  2. 02分析 CPU 或内存占用
  3. 03调查视图更新过多
  4. 04比较修复前后的性能数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/prisma-labs-dev/apple-skills --skill guide-swiftui-performance-audit

安装后在 Claude Code 中输入/guide-swiftui-performance-audit确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
code-smells.md
demystify-swiftui-performance-wwdc23.md
optimizing-swiftui-performance-instruments.md
profiling-intake.md
report-template.md
understanding-hangs-in-your-app.md
understanding-improving-swiftui-performance.md

详细介绍

Guide Skill — 这是专家工作流/模式指南,并非 API 参考文档。 最初来自 Thomas Ricouard 的 Dimillian/Skills。MIT License。

SwiftUI 性能审查

快速开始

使用此技能,先从代码入手诊断 SwiftUI 性能问题;如果仅凭代码审查无法解释症状,再请求性能分析证据。

工作流

  1. 对症状进行分类:渲染缓慢、滚动卡顿、CPU 使用率高、内存增长、卡死或视图更新过于频繁。
  2. 如果有代码,先使用 references/code-smells.md 进行代码优先审查。
  3. 如果没有代码,请索取最精简且有用的内容:目标视图、数据流、复现步骤和部署目标。
  4. 如果代码审查无法得出结论,或需要运行时证据,请引导用户使用 references/profiling-intake.md 进行性能分析。
  5. 使用 references/report-template.md 总结可能原因、证据、修复方案和验证步骤。

1. 收集信息

收集:

  • 目标视图或功能的代码。
  • 症状及确切的复现步骤。
  • 数据流:@State、@Binding、环境依赖项和可观察模型。
  • 问题是否出现在真机或模拟器上,以及是在 Debug 还是 Release 中观察到的。

尽可能请用户对问题进行分类:

  • CPU 峰值或电量消耗
  • 滚动卡顿或丢帧
  • 内存占用高或图像压力
  • 卡死或交互无响应
  • 视图更新过于频繁,或更新范围异常广泛

完整的性能分析信息收集清单请参阅 references/profiling-intake.md。

2. 代码优先审查

重点关注:

  • 由广泛的观察或环境读取导致的失效风暴。
  • 列表和 ForEach 中不稳定的标识。
  • body 或视图构建器中的繁重派生计算。
  • 复杂视图层级、GeometryReader 或偏好链导致的布局抖动。
  • 在主线程上进行大型图像解码或调整尺寸。
  • 作用范围过广的动画或转场。

详细的代码异味目录和修复指导请参阅 references/code-smells.md。

提供:

  • 附带代码引用的可能根因。
  • 建议的修复和重构方案。
  • 如有需要,提供最小复现或检测建议。

3. 引导用户进行性能分析

如果代码审查无法解释问题,请索取运行时证据:

  • SwiftUI 时间线和 Time Profiler 调用树的跟踪导出文件或截图。
  • 设备/OS/构建配置。
  • 正在进行性能分析的具体交互。
  • 如果用户正在比较某项改动,请提供改动前后的指标。

具体清单和收集步骤请参阅 references/profiling-intake.md。

4. 分析并诊断

  • 将证据对应到最可能的问题类别:失效、标识变动、布局抖动、主线程工作、图像开销或动画开销。
  • 按影响程度确定问题优先级,而不是按解释难易程度排序。
  • 区分代码层面的推测和有跟踪数据支持的证据。
  • 指出性能分析是否仍不充分,以及哪些补充证据有助于减少不确定性。

5. 修复

针对性地进行修复:

  • 缩小状态作用范围,减少广泛观察的传播范围。
  • 为 ForEach 和列表稳定标识。
  • 将繁重工作移出 body,放入基于输入更新的派生状态、模型层预计算、记忆化辅助函数或后台预处理。仅将 @State 用于视图自身拥有的状态,不要将其用作任意计算的临时缓存。
  • 仅当相等性检查比重新计算子树开销更低,且输入确实具有值语义时,才使用 equatable()。
  • 在渲染前对图像进行降采样。
  • 尽可能降低布局复杂度或使用固定尺寸。

示例、Observation 特有的传播范围指导和修复模式请参阅 references/code-smells.md。

6. 验证

请用户重新进行相同的采集,并与基线指标比较。 如果用户提供了 CPU、丢帧和内存峰值数据,请总结其变化。

输出

请提供:

  • 一份简短的指标表(如有,请列出优化前后的数据)。
  • 按影响程度排序的主要问题。
  • 建议的修复方案及预估工作量。

格式化最终审计报告时,请使用 references/report-template.md。

参考资料

  • 性能分析的前期信息收集与采集清单:references/profiling-intake.md
  • 常见代码异味及修复模式:references/code-smells.md
  • 审计输出模板:references/report-template.md
  • 用户提供 Apple 文档和 WWDC 资源后,将其添加到 references/ 下。
  • 使用 Instruments 优化 SwiftUI 性能:references/optimizing-swiftui-performance-instruments.md
  • 了解并改进 SwiftUI 性能:references/understanding-improving-swiftui-performance.md
  • 了解应用中的卡顿:references/understanding-hangs-in-your-app.md
  • 揭开 SwiftUI 性能之谜(WWDC23):references/demystify-swiftui-performance-wwdc23.md

评论

支持 Markdown