다음을 통해 공유


/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 키워드(keyword) 기본적으로 무시되며, 이상에서 진단을 /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.로 __restrictnoalias설정한 별칭을 가정할 수 없는 경우 훨씬 더 효과적입니다.

    참고 항목

    pragma를 옵션과 g 함께 사용하여 함수별로 전역 최적화를 optimize 사용하거나 사용하지 않도록 설정할 수 있습니다.

관련 정보는 /Oi (내장 함수 생성)/Ox (대부분의 속도 최적화 사용)을 참조하세요.

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

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

  2. 구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.

  3. 추가 옵션 상자에 컴파일러 옵션을 입력합니다.

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

참고 항목

MSVC 컴파일러 명령줄 구문