컴파일 최적화를 제대로 활용하기 위해서는 컴파일 최적화 옵션을 제대로 이해하고 활용하는 것입니다.
스위프트에서 제공하는 세 가지 최적화 옵션은 아래와 같습니다.
-Onone
: 통상적으로 개발시점에 사용하는 옵션입니다. 이 옵션을 사용하면 최소한의 최적화만 수행하고, 모든 디버깅 정보를 보존합니다.-Osize
: 통상적으로 제품단계에 사용하는 옵션입니다. 이 옵션을 사용하면 컴파일러는 적극적인 최적화를 수행합니다. 디버깅 정보는 대부분 보존하지 않습니다.-O
: 이 모드는 조금 특수한 옵션입니다. 이 옵션을 사용하면 컴파일러가 코드 크기보다는 성능을 우선시하여 컴파일합니다.Xcode에서 최적화 옵션은 아래 순서에 따라 설정할 수 있습니다.
참고로 Apple Clang – Code Generation 섹셕은 C, C++, Objective-C 등의 언어 최적화 옵션 부분입니다. 필요하다면 이 부분도 조절하여 최적화 단계를 조절할 수 있습니다.
위의 스크린샷은 Xcode의 iOS 앱 기본 템플릿으로 프로젝트를 생성하면 설정되어 있는 최적화 옵션입니다. 통상적인 디버깅 환경, 즉, 시뮬레이터나 기기에서 Build and Run (cmd + R) 하는 실행때는 -Onone
옵션으로 최적화를 수행하지 않고, 배포되는 환경에서는 -O
옵션이 선택되어 있는 것을 볼 수 있습니다(Xcode 14 기준).
디버깅 중에 실제 제품단계의 최적화를 경험해보고 싶다면 Debug 옵션을 -Osize
로 변경하고 클린빌드 후 실행해 보면 됩니다.