/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 개발 환경에서 이 컴파일러 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.
구성 속성>C/C++>최적화 속성 페이지를 선택합니다.
Favor Size 또는 Speed 속성을 수정합니다.
프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면
- FavorSizeOrSpeed을(를) 참조하세요.