☰
swiftui-performance-audit - SKILL
2026/10/8 2:00:45 网站建设 项目流程

name: swiftui-performance-audit
description: 从代码审查和性能剖析证据中审计 SwiftUI 性能问题。
risk: safe
source: “Dimillian/Skills (MIT)”
date_added: “2026-03-25”

SwiftUI 性能审计

快速开始

使用本技能先从代码入手诊断 SwiftUI 性能问题,当仅靠代码审查无法解释症状时,再请求性能剖析证据。

何时使用

  • 当用户报告 SwiftUI 渲染慢、滚动卡顿、布局抖动或高 CPU 时。
  • 当你需要代码优先审计,且如果需要性能剖析证据时提供 Instruments 指导时。

工作流

  1. 对症状进行分类:渲染慢、滚动卡顿、高 CPU、内存增长、卡死(hangs)或过多的视图更新。
  2. 如果代码可用,使用references/code-smells.md从代码优先审查开始。
  3. 如果代码不可用,索取最有用的最小切片:目标视图、数据流、复现步骤和部署目标。
  4. 如果代码审查无定论或需要运行时证据,使用references/profiling-intake.md指导用户进行性能剖析。
  5. 使用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 Instruments:references/optimizing-swiftui-performance-instruments.md
  • Understanding and improving SwiftUI performance:references/understanding-improving-swiftui-performance.md
  • Understanding hangs in your app:references/understanding-hangs-in-your-app.md
  • Demystify SwiftUI performance(WWDC23):references/demystify-swiftui-performance-wwdc23.md

限制

  • 仅当任务明确匹配上述范围时使用本技能。
  • 不要将输出视为环境特定验证、测试或专家审查的替代品。
  • 如果缺少所需的输入、权限、安全边界或成功标准,停下来询问澄清。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询