
name: swiftui-performance-auditdescription: 从代码审查和性能剖析证据中审计 SwiftUI 性能问题。risk: safesource: “Dimillian/Skills (MIT)”date_added: “2026-03-25”SwiftUI 性能审计快速开始使用本技能先从代码入手诊断 SwiftUI 性能问题当仅靠代码审查无法解释症状时再请求性能剖析证据。何时使用当用户报告 SwiftUI 渲染慢、滚动卡顿、布局抖动或高 CPU 时。当你需要代码优先审计且如果需要性能剖析证据时提供 Instruments 指导时。工作流对症状进行分类渲染慢、滚动卡顿、高 CPU、内存增长、卡死hangs或过多的视图更新。如果代码可用使用references/code-smells.md从代码优先审查开始。如果代码不可用索取最有用的最小切片目标视图、数据流、复现步骤和部署目标。如果代码审查无定论或需要运行时证据使用references/profiling-intake.md指导用户进行性能剖析。使用references/report-template.md总结可能的原因、证据、修复和验证步骤。1. 信息收集Intake收集目标视图或功能代码。症状和精确的复现步骤。数据流State、Binding、环境依赖和可观察模型。问题是在设备还是模拟器上出现以及是在 Debug 还是 Release 中观察到的。如果可能让用户对问题进行分类CPU 尖峰或电池消耗滚动卡顿或掉帧高内存或图像压力卡死或无响应的交互过多或异常广泛的视图更新完整的性能剖析信息收集清单请阅读references/profiling-intake.md。2. 代码优先审查重点关注广泛观察或环境读取导致的失效风暴。列表和ForEach中不稳定的身份。body或视图构建器中的重量级派生工作。复杂层级、GeometryReader或偏好链导致的布局抖动。主线程上的大型图像解码或调整大小工作。应用得过宽的动画或过渡工作。使用references/code-smells.md获取详细的异味目录和修复指导。提供带代码引用的可能根本原因。建议的修复和重构。如果需要提供最小复现或插桩建议。3. 引导用户进行性能剖析如果代码审查无法解释问题索取运行时证据trace 导出或 SwiftUI 时间线和 Time Profiler 调用树的截图。设备/OS/构建配置。正在剖析的确切交互。如果用户在比较改动提供前后指标。使用references/profiling-intake.md获取确切的清单和收集步骤。4. 分析与诊断将证据映射到最可能的类别失效、身份抖动、布局抖动、主线程工作、图像成本或动画成本。按影响排序问题而不是按解释的容易程度。区分代码级怀疑与 trace 支撑的证据。指出性能剖析仍然不足的地方以及哪些额外证据会减少不确定性。5. 修复应用有针对性的修复收窄状态作用域并减少广泛的观察扇出。稳定ForEach和列表的身份。将重工作移出body移入从输入更新的派生状态、模型层预计算、记忆化辅助函数或后台预处理。仅将State用于视图自有状态而不是作为任意计算的特设缓存。仅在相等性比较比重算子树更便宜且输入真正具有值语义时使用equatable()。在渲染前对图像降采样。尽可能减少布局复杂度或使用固定尺寸。使用references/code-smells.md获取示例、Observation 特定的扇出指导和修复模式。6. 验证请用户重新运行相同的捕获并与基线指标比较。如果提供了差值总结增量CPU、掉帧、内存峰值。输出提供简短的指标表如果有前后对比。最重要的问题按影响排序。建议的修复及估计工作量。格式化最终审计时使用references/report-template.md。参考性能剖析信息收集与采集清单references/profiling-intake.md常见代码异味与修复模式references/code-smells.md审计输出模板references/report-template.md当用户提供时将 Apple 文档和 WWDC 资源添加到references/下。Optimizing SwiftUI performance with Instrumentsreferences/optimizing-swiftui-performance-instruments.mdUnderstanding and improving SwiftUI performancereferences/understanding-improving-swiftui-performance.mdUnderstanding hangs in your appreferences/understanding-hangs-in-your-app.mdDemystify SwiftUI performanceWWDC23references/demystify-swiftui-performance-wwdc23.md限制仅当任务明确匹配上述范围时使用本技能。不要将输出视为环境特定验证、测试或专家审查的替代品。如果缺少所需的输入、权限、安全边界或成功标准停下来询问澄清。