Skip to content

Main Thread Microhang이 발생하는 현상을 분석하고 개선한다 #641

Description

@opficdev

문제

Instruments SwiftUI 템플릿 측정 중 Main Thread Microhang이 관측된다.

관측된 증상

  • Run 1에서 Main Thread Microhang 260.98ms 확인
  • Run 3에서 Main Thread 구간 124.30ms 확인
  • Time Profiler에서 main queue 수신 이후 Combine, DevLogPresentation, ObservationRegistrar.withMutation/willSet, SwiftUI invalidation 흐름 확인
  • 같은 시간대에 SwiftUI Long View Body Updates가 함께 관측됨

아직 확정되지 않은 부분

  • 특정 Feature/View 함수명은 Instruments에서 심볼화되지 않음
  • Combine 자체가 병목인지, Combine 수신 이후 상태 변경 또는 SwiftUI invalidation 비용이 병목인지는 미확정
  • Today 화면의 파생 데이터 계산 비용과 직접 연결되는지는 추가 계측 필요

작업 방향

  • Microhang이 발생하는 재현 흐름을 명확히 정리
  • 상태 변경 이후 SwiftUI invalidation이 발생하는 경로 확인
  • TodayFeature.State.sections, summaryCounts, displayedTodos, groupedSectionItems 등 파생 데이터 계산 구간 계측
  • Instruments에서 signpost duration 측정
  • 개선 전후 Main Thread hang duration 및 SwiftUI long update duration 비교

완료 기준

  • Main Thread Microhang의 주요 원인 구간 식별
  • 개선 전후 수치 확보
  • 이력서 또는 포트폴리오에 사용할 수 있는 실측 지표 정리

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions