/Og
(전역 최적화)
사용되지 않음. 로컬 및 전역 최적화, 자동 레지스터 할당 및 루프 최적화를 제공합니다. 대신 (크기 최소화) 또는 /O2
(속도 최대화)를 사용하는 /O1
것이 좋습니다.
구문
/Og
설명
/Og
는 사용되지 않습니다. 이제 최적화를 사용하도록 설정하면 이러한 최적화가 기본적으로 사용하도록 설정됩니다. 최적화/O1
에 대한 자세한 내용은 ( /O2
크기 최소화, 속도 최대화) 또는/Ox
(대부분의 속도 최적화 사용)을 참조하세요.
다음 최적화는 다음에서 사용할 수 있습니다./Og
로컬 및 전역 공통 하위 식 제거
이 최적화에서 공통 하위 식의 값은 한 번 계산됩니다. 다음 예제에서 세 식의
b
값이c
변경되지 않는 경우 컴파일러는 임시 변수에 계산b + c
을 할당하고 해당 변수를b + c
다음에 사용할 수 있습니다.a = b + c; d = b + c; e = b + c;
로컬 공통 하위 식 최적화를 위해 컴파일러는 코드의 짧은 섹션을 검사하여 일반적인 하위 식에 대해 검사합니다. 전역 공통 하위 식 최적화를 위해 컴파일러는 전체 함수에서 일반적인 하위 식에 대해 검색합니다.
자동 레지스터 할당
이 최적화를 통해 컴파일러는 자주 사용되는 변수 및 하위 식이 레지스터에 저장됩니다. 키워드는
register
기본적으로 무시되며 아래 또는 그 이상에서/std:c++17
진단이 발생합니다.루프 최적화
이 최적화는 루프 본문에서 고정 하위 식을 제거합니다. 최적 루프에는 루프의 각 실행을 통해 값이 변경되는 식만 포함됩니다. 다음 예제에서는 루프 본문에서 식
x + y
이 변경되지 않습니다.i = -100; while( i < 0 ) { i += x + y; }
최적화
x + y
후 루프가 실행될 때마다 계산되지 않고 한 번 계산됩니다.i = -100; t = x + y; while( i < 0 ) { i += t; }
루프 최적화는 컴파일러에서 별칭을 설정하거나 , 또는
restrict
.로__restrict
noalias
설정한 별칭을 가정할 수 없는 경우 훨씬 더 효과적입니다.참고 항목
pragma를 옵션과
g
함께 사용하여 함수별로 전역 최적화를optimize
사용하거나 사용하지 않도록 설정할 수 있습니다.
관련 정보는 /Oi
(내장 함수 생성) 및 /Ox
(대부분의 속도 최적화 사용)을 참조하세요.
Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.
구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.
추가 옵션 상자에 컴파일러 옵션을 입력합니다.
프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면
- AdditionalOptions을(를) 참조하세요.