스위프트 컴파일러는 기본적으로 파일을 개별적으로 컴파일합니다. 이렇게하면 여러개의 파일을 병렬로 빠르게 컴파일할 수 있죠. 그렇지만 각각의 파일을 컴파일하다보면 성능 최적화가 어려운 부분이 생깁니다. WMO는 전체 코드를 하나의 파일처럼 컴파일하여 런타임 성능을 최적화 할 수 있습니다. 함수를 인라인 하는 등의 최적화가 가능해지기 때문이에요.
WMO는 Xcode의 Build Setting에서 ‘Whole Module Optimization’ 옵션을 사용하여 활성화 할 수 있습니다.
Xcode Build Settings의 WMO 설정 모습
Debug 모드에서는 증분 컴파일을, Release 모드에서는 WMO를 적용하는 옵션이 선택되어 있습니다.
WMO를 사용하면 병렬 컴파일이 되지 않기 때문에 컴파일 속도는 저하되지만 런타임 최적화가 더 많이 진행되기 때문에 동작 속도는 높일 수 있습니다.