swiftui-performance-audit 是做什麼的?
透過程式碼審查與架構分析,診斷並改善 SwiftUI 執行時期效能。適用於 SwiftUI 應用程式中緩慢渲染、滾動卡頓、高 CPU/記憶體使用率、過多的檢視更新或版面配置抖動等問題,並在純程式碼審查不足時提供使用者執行 Instruments 效能分析的指引。
使用方式
提出與 SwiftUI 效能相關的問題或程式碼片段,此技能將分析潛在的問題點,提供修正建議,並建議適當的 Instruments 工具(如 Time Profiler、SwiftUI 分析範本、Allocations)以驗證改善效果。
範例問題
- 「此檢視在滾動時會掉幀,請檢查是否有不必要的更新。」
- 「這個清單的 CPU 使用率偏高,請分析可能的佈局計算瓶頸。」
- 「應用程式記憶體持續增加,請檢查是否有循環參照或未釋放的檢視。」
- 「請診斷此
List中的佈局抖動原因。」 - 「當 code review 不足以找出問題時,請推薦要使用的 Instruments 範本。」
支援的平台
- iOS / iPadOS
- macOS
- tvOS
- watchOS
常見的 SwiftUI 效能問題
- 不必要的檢視更新(因未正確實作
Equatable或使用了複雜的@State/@ObservedObject) - 複雜的佈局計算(例如巢狀
GeometryReader或未最佳化的LazyVStack/LazyHStack) - 過多的
@EnvironmentObject依賴 - 影像或資源解碼與快取
- 無謂的
onAppear/onChange/onReceive副作用 - 使用
PreferenceKey或Anchor時產生過多的協調
修正策略
- 使用
EquatableView或自訂的==實作來減少不必要更新 - 盡量使用
LazyVStack/LazyHStack搭配id:識別器 - 避免將
GeometryReader放在檢視樹狀結構的高層 - 使用
.drawingGroup()來減少離屏渲染 - 善用
@State和@StateObject的鎖定範圍,避免全域狀態 - 對於大量影像,考慮使用
AsyncImage或第三方快取程式庫
當程式碼審查無法找到問題時,技能會提示使用者執行 Instruments 工具,並提供如何設定分析範本、讀取火焰圖與時間軸的指引。