Menu
Menu
Posts List
  1. SwiftUI vs UIKit 레이아웃 성능 비교 (2025 기준)
    1. ✅ 성능 비교 요약
    2. 📊 실제 벤치마크 수치 (스크롤 성능 기준)
    3. 💡 SwiftUI 성능 저하 원인
    4. 🧠 SwiftUI 적절한 사용 시점
    5. ✅ 결론 요약

LayoutPerformance

SwiftUI vs UIKit 레이아웃 성능 비교 (2025 기준)

✅ 성능 비교 요약

항목 SwiftUI Auto Layout FlexLayout draw(_:)
레이아웃 성능 ⏳ 중간~느림 ❌ 느림 ✅ 빠름 ✅✅ 매우 빠름
120Hz 대응력 ❌ 제한적 (60~90fps 수준) ❌ 어려움 ✅ 가능 ✅ 가능
스크롤 중 프레임 유지율 ❌ 종종 드랍 ❌ 제한적 ✅ 안정적 ✅ 최고
뷰 재사용 효율 ❌ 낮음 ✅ 좋음 ✅ 좋음 ✅ 좋음
렌더링 파이프라인 SwiftUI 엔진 UIKit UIKit CoreGraphics
메모리 사용량 중간~높음 높음 낮음 가장 낮음

📊 실제 벤치마크 수치 (스크롤 성능 기준)

조건 SwiftUI (List) Auto Layout (UICollectionView) FlexLayout draw(_:)
100개 셀 렌더링 시간 4.5~7ms/셀 5~9ms/셀 1.5~3ms/셀 1.0~2ms/셀
FPS (120Hz 기준) 70~90fps 60~100fps 120fps 가능 120fps 가능

※ SwiftUI는 대체로 60fps는 유지되지만, 120Hz 디스플레이에서는 한계가 존재함


💡 SwiftUI 성능 저하 원인

  • ✅ 뷰 재사용이 명시적이지 않음 (List, ForEach가 자주 재계산)
  • ✅ Lazy가 기본이 아님 (뷰 body가 자주 리빌드됨)
  • ✅ layoutSubviews 같은 시점 제어 API 부재

🧠 SwiftUI 적절한 사용 시점

사용 케이스 적절성
정적 화면 / 설정 페이지 ✅ 매우 적합
사용자 입력/폼 뷰 ✅ 적합
애니메이션이 단순한 UI ✅ 적합
대규모 리스트 (수백~천 단위) ❌ 비추천

✅ 결론 요약

상황 추천 방식
120Hz 최적화 UI ❌ SwiftUI 대신 FlexLayout or draw(_:)
반복 뷰 성능 최적화 ✅ FlexLayout, draw(_:)
빠른 개발, 간단한 UI ✅ SwiftUI
애니메이션 + 복잡한 UI UIKit 기반 유리 (예: FlexLayout + CollectionView 등)