Skip to content

런타임 핫패스 최적화

WeaveDI v3.1.0에서 도입된 고성능 런타임 최적화 시스템에 대해 알아보세요.

개요

런타임 핫패스 최적화는 의존성 주입의 성능 병목을 제거하기 위해 설계된 고급 최적화 시스템입니다.

핵심 최적화 기술

  1. TypeID + 인덱스 접근

    • ObjectIdentifierInt 슬롯 매핑
    • 딕셔너리 조회 대신 O(1) 배열 인덱스 접근
    • 메모리 접근 패턴 최적화
  2. 스냅샷/락-프리 읽기

    • 불변 Storage 클래스 기반 스냅샷 방식
    • 읽기 경합 완전 제거
    • 쓰기 시에만 락 사용
  3. 인라인 최적화

    • @inlinable + @inline(__always) 적용
    • @_alwaysEmitIntoClient로 크로스 모듈 최적화
    • 함수 호출 오버헤드 감소
  4. 팩토리 체인 제거

    • 중간 팩토리 단계 없는 직접 호출 경로
    • 의존성 체인 평탄화
    • 다단계 팩토리 비용 제거
  5. 스코프별 정적 스토리지

    • singleton/session/request 스코프 분리
    • 원자적 once 초기화
    • 경쟁 상태 제거

사용법

최적화 활성화

swift
import WeaveDI

// 최적화 모드 활성화
await UnifiedRegistry.shared.enableOptimization()

// 기존 코드는 변경 없이 성능 향상 적용됨
let service = await UnifiedDI.resolve(UserService.self)

최적화 확인

swift
// 최적화 상태 확인
let isOptimized = await UnifiedRegistry.shared.isOptimizationEnabled
print("최적화 활성화됨: \(isOptimized)")

// 최적화 비활성화
await UnifiedRegistry.shared.disableOptimization()

성능 향상

시나리오향상도설명
단일 스레드 해결50-80% 빠름TypeID + 직접 접근
멀티 스레드 읽기2-3배 처리량락-프리 스냅샷
복잡한 의존성20-40% 빠름체인 평탄화

벤치마크

포함된 벤치마크를 실행하여 성능 향상을 측정하세요:

bash
swift run -c release Benchmarks --count 100k --quick

호환성

  • 100% API 호환성: 기존 코드 변경 불필요
  • 선택적 최적화: 언제든지 활성화/비활성화 가능
  • 점진적 마이그레이션: 단계별 적용 지원
  • 무중단 변경: 기존 동작 완전 보존

내부 구현

최적화는 다음 파일들에 구현되어 있습니다:

  • OptimizedTypeRegistry.swift - TypeID 시스템
  • AtomicStorage.swift - 락-프리 스토리지
  • DirectCallRegistry.swift - 직접 호출 경로
  • OptimizedScopeStorage.swift - 스코프 최적화

관련 문서

MIT 라이선스 하에 릴리스됨.