swiftui-performance-audit 是做什么的?
通过代码审查和架构分析来审计并优化 SwiftUI 运行时性能。适用于诊断 SwiftUI 应用中的渲染缓慢、滚动卡顿、高 CPU/内存使用、过多视图更新或布局抖动等问题,并在仅靠代码审查不足时,为用户自行运行的 Instruments 性能分析提供指导。
概述
该技能帮助您在代码审查阶段识别 SwiftUI 中的性能瓶颈。通过分析视图结构、状态管理和依赖关系,它能够提供具体、可操作的优化建议。当静态分析不足以确定问题根因时,它还会指导您使用 Apple 的 Instruments 工具进行进一步的动态分析。
审计领域
- 视图更新与渲染:检测导致不必要视图更新的模式,如使用
@State或@ObservedObject不当、复杂的body计算或大量@Published属性。 - 布局性能:识别可能导致布局抖动的昂贵布局计算、嵌套
GeometryReader或复杂的Layout协议实现。 - 内存与资源管理:发现可能导致高内存使用或资源泄漏的大型持久化快照、图像缓存问题以及未释放的闭包捕获。
- 滚动性能:针对
List、ScrollView和LazyVStack等容器,检查可能导致滚动卡顿的 cell 重用问题、复杂视图层次或昂贵的标识符生成逻辑。 - 绘图与动画:识别低效的绘图代码(如
Canvas或drawRect)、触发过多重绘的动画或导致主线程阻塞的同步操作。
工作流程
- 接收请求:用户提供一段 SwiftUI 代码或描述特定性能问题(例如:列表滚动卡顿、点击交互延迟)。
- 分析代码:基于上述领域对代码进行静态审计,识别潜在的性能反模式。
- 提供建议:针对每个问题,给出具体的优化建议(例如:将
@ObservedObject替换为@StateObject、为列表元素使用Identifiable、简化视图层次等)。 - 指导性能分析:如果代码审查无法明确根因,建议用户运行特定的 Instruments 模板(如
SwiftUI Profile、Time Profiler、Core Animation)并指导其关注哪些关键指标。 - 输出报告:以清晰的格式(如列表或表格)输出审计结果,包括问题描述、严重程度和建议的修复方案。
支持的平台
- iOS 14+
- macOS 11+
- watchOS 7+
- tvOS 14+
假设
- 用户理解 SwiftUI 的基本概念(
View、@State、@Binding、ObservableObject等)。 - 用户拥有在目标平台上运行应用程序的环境。
- 在需要进一步分析时,用户能够使用 Xcode 的 Instruments。
示例用法
用户请求:我的 SwiftUI 列表在滚动时非常卡顿,cpu 占用很高。
技能响应:请提供相关视图的代码。我将检查
List或ScrollView的使用、每个列表项的标识以及视图层次结构。如有必要,我会建议转换为使用LazyVStack并正确实现Identifiable协议,或使用DiffableDataSource等替代方案。如果代码层面无法确定原因,请运行 Instruments Time Profiler 并聚焦于body计算耗时。