다음을 통해 공유


/Os, /Ot (작은 코드 선호, 빠른 코드 선호)

/Os/Ot 컴파일러 옵션은 코드를 최적화할 때 크기(/Os) 또는 속도(/Ot)를 선호할지 여부를 지정합니다.

구문

/Os
/Ot

설명

/Os (작은 코드 선호)는 컴파일러에 속도보다 크기를 선호하도록 지시하여 EXE 및 DLL의 크기를 최소화합니다. 컴파일러는 많은 C 및 C++ 구문을 기능적으로 유사한 컴퓨터 코드 시퀀스로 줄일 수 있습니다. 경우에 따라 이러한 차이는 크기와 속도의 절충을 제공합니다. /Os/Ot 옵션을 사용하면 다른 옵션에 대해 기본 설정을 지정할 수 있습니다.

/Ot (빠른 코드 선호)는 컴파일러에 크기보다 속도를 선호하도록 지시하여 EXE 및 DLL의 속도를 최대화합니다. /Ot 는 최적화를 사용하는 경우 기본값입니다. 컴파일러는 많은 C 및 C++ 구문을 기능적으로 유사한 컴퓨터 코드 시퀀스로 줄일 수 있습니다. 경우에 따라 이러한 차이는 크기와 속도의 절충을 제공합니다. 이 /Ot 옵션은 (속도 최대화) 옵션에 /O2 의해 암시됩니다. 이 /O2 옵션은 여러 옵션을 결합하여 더 빠른 코드를 생성합니다.

참고 항목

프로파일링 테스트 실행에서 수집된 정보는 지정/Ob/Os하는 경우 적용되는 모든 최적화를 재정의합니다/Ot. 자세한 내용은 프로필 기반 최적화를 참조하세요.

x86 관련 예제

다음 예제 코드는 (작은 코드 선호) 옵션과 /Ot (빠른 코드 선호) 옵션 간의 /Os 차이점을 보여 줍니다.

참고 항목

이 예제에서는 사용하거나 사용할 /Os 때 예상되는 동작을 설명합니다 /Ot. 그러나 릴리스에서 릴리스로의 컴파일러 동작으로 인해 아래 코드에 대해 서로 다른 최적화가 발생할 수 있습니다.

/* differ.c
  This program implements a multiplication operator
  Compile with /Os to implement multiply explicitly as multiply.
  Compile with /Ot to implement as a series of shift and LEA instructions.
*/
int differ(int x)
{
    return x * 71;
}

아래 컴퓨터 코드 조각에 표시된 것처럼 크기()/Os로 컴파일될 때 differ.c 컴파일러는 반환 문의 곱하기 식을 명시적으로 곱하여 짧지만 느린 코드 시퀀스를 생성합니다.

mov    eax, DWORD PTR _x$[ebp]
imul   eax, 71                  ; 00000047H

또는 속도(/Ot)를 위해 컴파일되는 경우 differ.c 컴파일러는 반환 문에서 곱하기 식을 일련의 시프트 및 LEA 명령으로 구현하여 빠르고 긴 코드 시퀀스를 생성합니다.

mov    eax, DWORD PTR _x$[ebp]
mov    ecx, eax
shl    eax, 3
lea    eax, DWORD PTR [eax+eax*8]
sub    eax, ecx

Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.

  2. 구성 속성>C/C++>최적화 속성 페이지를 선택합니다.

  3. Favor Size 또는 Speed 속성을 수정합니다.

프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면

참고 항목

/O 옵션(코드 최적화)
MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문