적절한 최적화 옵션 사용하기

컴파일 최적화를 제대로 활용하기 위해서는 컴파일 최적화 옵션을 제대로 이해하고 활용하는 것입니다.

스위프트에서 제공하는 세 가지 최적화 옵션은 아래와 같습니다.

  • -Onone : 통상적으로 개발시점에 사용하는 옵션입니다. 이 옵션을 사용하면 최소한의 최적화만 수행하고, 모든 디버깅 정보를 보존합니다.
  • -Osize : 통상적으로 제품단계에 사용하는 옵션입니다. 이 옵션을 사용하면 컴파일러는 적극적인 최적화를 수행합니다. 디버깅 정보는 대부분 보존하지 않습니다.
  • -O : 이 모드는 조금 특수한 옵션입니다. 이 옵션을 사용하면 컴파일러가 코드 크기보다는 성능을 우선시하여 컴파일합니다.

Xcode에서 최적화 옵션은 아래 순서에 따라 설정할 수 있습니다.

  1. Project Navigator에서 프로젝트를 선택
  2. Target 별로 옵션을 조정하고자 한다면 특정 Target을, Project 전체로 옵션을 조정하고자 한다면 Project를 선택
  3. Build Settings 탭을 선택
  4. Optimization Level 검색
  5. 원하는 옵션 선택

참고로 Apple Clang – Code Generation 섹셕은 C, C++, Objective-C 등의 언어 최적화 옵션 부분입니다. 필요하다면 이 부분도 조절하여 최적화 단계를 조절할 수 있습니다.

위의 스크린샷은 Xcode의 iOS 앱 기본 템플릿으로 프로젝트를 생성하면 설정되어 있는 최적화 옵션입니다. 통상적인 디버깅 환경, 즉, 시뮬레이터나 기기에서 Build and Run (cmd + R) 하는 실행때는 -Onone 옵션으로 최적화를 수행하지 않고, 배포되는 환경에서는 -O 옵션이 선택되어 있는 것을 볼 수 있습니다(Xcode 14 기준).

디버깅 중에 실제 제품단계의 최적화를 경험해보고 싶다면 Debug 옵션을 -Osize로 변경하고 클린빌드 후 실행해 보면 됩니다.