배경
- 컴파일 타임 최적화 기술인 WMO에 관해 조금 잘못 알고 있었던 점이 있어 기록하기로 했다.
WMO
- Swift 파일의 묶음인 모듈을 컴파일 하면... 각 파일이 개별로 컴파일되어 오브젝트 파일(.o)을 만들고, 링커가 각 오브젝트 파일을 합쳐 실행 가능한 바이너리 파일을 생성한다.
- 개별로 컴파일되면 다른 파일의 함수를 모르기 때문에 function inlining 및 generic specialization 등의 최적화를 단일 파일 내에서만 진행 가능하다.
- 다른 파일에 구현이 있다면 최적화 진행 불가!
- WMO 컴파일 옵션을 사용하면 모듈의 전체 파일을 한 번에 같이 컴파일하기 때문에, 모듈 전체 영역에 대한 컴파일 타임 최적화 수행이 가능하다.
- 이는 2배 ~ 5배 정도의 성능 향상이 가능함!
- Xcode 8 부터 기본적으로 설정이 활성화되어 있기 때문에 어떻게 활성화할지 고민할 필요는 없음~~
출처
https://brunch.co.kr/@joonwonlee/14
https://www.swift.org/blog/whole-module-optimizations/