A플랜 (무분별한 비동기 분리)
무지성 백그라운드 스케줄링
가벼운 문자열 포맷 연산 1,000번을 매번 독립된 백그라운드 태스크로 이탈 및 복귀시킨다.
for _ in 1...1000 {
Task.detached {
let res = self.formatString()
await MainActor.run { self.uiArray.append(res) }
}
}
Main 스레드 권역
스레드 경계선
📦 Data
Background 권역
진행률: 0 / 1,000
물리 스레드 스위칭 횟수: 0회
총 실행 소요 시간: -
💥 호핑 오버헤드 오염 확정:
단순 연산을 백그라운드로 밀어냈지만 스레드 경계를 왕복하는 컨텍스트 스위칭이 총 2,000회 누적되면서, 시스템 통행료(오버헤드)가 본체 연산 비용을 압도해 연산 속도가 수백 배 저하되었습니다.
B플랜 (동기 직행 처리)
정적 격리 내부 다이렉트 연산
메인 액터 컨텍스트에 락(Lock)이 없는 것을 확인하고, 불필요한 이탈 없이 그 자리에서 1,000번 동기 실행한다.
for _ in 1...1000 {
let res = self.formatString()
self.uiArray.append(res)
}
Main Thread 권역 (제자리 연산)
스레드 경계선
⚡ Direct
Background (경로 차단)
진행률: 0 / 1,000
물리 스레드 스위칭 횟수: 0회
총 실행 소요 시간: -
🛡️ 정적 격리 직행 성공:
불필요한 스레드 스위칭을 단 1회도 유발하지 않고 메인 액터 내부에서 일괄 동기 처리하여 연산을 단 수 밀리초(ms) 만에 완수했습니다. 데이터 레이스 안전성과 성능을 동시에 잡았습니다.