SwiftUI 성능 이해 및 개선
에어비앤비는 2022년에 SwiftUI를 도입하여 엔지니어 생산성을 향상시켰지만 새로운 성능 문제를 야기했습니다. 이러한 문제를 해결하기 위해 에어비앤비는 성능에 중요한 코드 패턴을 식별하고 검증하는 새로운 툴링을 개발했습니다. 에어비앤비의 기능 아키텍처는 선언적 UI 패턴과 단방향 데이터 흐름 시스템을 사용하므로 SwiftUI 도입이 간소화되었습니다. 그러나 이러한 아키텍처를 사용하는 SwiftUI 기능은 예상만큼 성능이 좋지 않았으며, 고성능 기능을 구축하려면 SwiftUI의 성능 특성을 이해하는 것이 중요합니다. SwiftUI의 뷰 차이 알고리즘은 뷰 본문을 다시 평가해야 하는 시점을 결정하는 데 사용되지만 종종 간과되고 공식적으로 문서화되지 않습니다. 이 알고리즘은 뷰에 저장된 각 속성을 비교하지만, 일반적인 코드 패턴은 이를 혼동시켜 불필요한 뷰 본문 평가로 이어질 수 있습니다. 이를 해결하기 위해 에어비앤비는 뷰에 대한 Equatable 적합성을 생성하는 새로운 @Equatable 매크로를 개발하여 엔지니어가 차이를 비교할 때 어떤 속성을 비교할지 선택적으로 결정할 수 있도록 했습니다. 이 접근 방식을 통해 뷰가 차이를 비교할 수 있도록 보장하고 나중에 회귀가 발생하는 것을 방지할 수 있습니다. 또한 에어비앤비는 뷰 본문이 너무 복잡하고 더 작고 차이 비교가 가능한 조각으로 리팩터링해야 할 때를 엔지니어가 식별하는 데 도움이 되는 맞춤형 SwiftLint 규칙을 구현했습니다. 뷰를 더 작은 조각으로 나누면 SwiftUI는 실제로 변경된 뷰 부분만 효율적으로 업데이트하여 기능이 복잡해짐에 따라 성능을 유지할 수 있습니다.