Skip to content

자동 DI 최적화 ​

자동으로 의존성 그래프를 생성하고 성능을 최적화하는 시스템

개요 ​

WeaveDI는 별도 설정 없이 자동으로 의존성 관계를 추적하고 성능을 최적화하는 시스템을 제공합니다. 개발자가 신경쓰지 않아도 백그라운드에서 자동으로 실행됩니다.

자동 기능들 ​

🔄 자동 의존성 그래프 생성 ​

swift
// 등록하기만 하면 자동으로 그래프에 추가
let service = UnifiedDI.register(UserService.self) {
    UserServiceImpl()
}
// 자동 로깅: 📊 Auto tracking registration: UserService

🎯 자동 Actor Hop 감지 및 최적화 ​

swift
let service = UnifiedDI.resolve(UserService.self)
// 자동 로그: 🎯 Actor optimization suggestion for UserService: MainActor로 이동 권장 (hops: 12, avg: 85.3ms)

🔒 자동 타입 안전성 검증 ​

swift
let service = UnifiedDI.resolve(UserService.self)
// 자동 로그: 🔒 Type safety issue: UserService is not Sendable

⚡ 자동 성능 최적화 ​

swift
for _ in 1...15 {
    let service = UnifiedDI.resolve(UserService.self)
}
// 자동 로그: ⚡ Auto optimized: UserService (10 uses)

API 참조 ​

자동 수집 정보 확인 ​

swift
UnifiedDI.autoGraph              // 🔄 자동 생성된 의존성 그래프
UnifiedDI.optimizedTypes         // ⚡ 자동 최적화된 타입들
UnifiedDI.stats                  // 📊 자동 수집된 사용 통계
UnifiedDI.circularDependencies   // ⚠️ 자동 감지된 순환 의존성
UnifiedDI.actorOptimizations     // 🎯 Actor 최적화 제안 목록
UnifiedDI.typeSafetyIssues       // 🔒 타입 안전성 이슈 목록
UnifiedDI.autoFixedTypes         // 🛠️ 자동 수정된 타입들
UnifiedDI.actorHopStats          // ⚡ Actor hop 통계
UnifiedDI.asyncPerformanceStats  // 📊 비동기 성능 통계 (밀리초)

최적화 제어 ​

swift
UnifiedDI.setAutoOptimization(false)     // 자동 최적화 비활성화
UnifiedDI.isOptimized(UserService.self)  // 특정 타입의 최적화 상태 확인
UnifiedDI.resetStats()                   // 통계 초기화

로깅 레벨 제어 ​

swift
UnifiedDI.setLogLevel(.all)          // ✅ 모든 로그 출력 (기본값)
UnifiedDI.setLogLevel(.registration) // 📝 등록된 의존성만
UnifiedDI.setLogLevel(.optimization) // ⚡ 성능 최적화 정보만
UnifiedDI.setLogLevel(.errors)       // ⚠️ 순환 의존성 에러만
UnifiedDI.setLogLevel(.off)          // 🔇 모든 자동 로깅 끄기

주요 특징 ​

  • 무설정: 별도 설정 없이 자동으로 동작
  • 백그라운드 실행: 성능에 영향 없이 백그라운드에서 실행
  • 실시간 업데이트: 30초마다 자동으로 최적화 수행
  • 메모리 효율적: 상위 20개 타입만 캐시에 유지

이 모든 기능은 개발자가 별도로 호출하거나 설정할 필요 없이 자동으로 실행됩니다.

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