Udostępnij za pośrednictwem


/Og (Optymalizacje globalne)

Przestarzałe. Zapewnia optymalizacje lokalne i globalne, alokację automatycznego rejestrowania i optymalizację pętli. Zalecamy zamiast tego użycie opcji /O1 (minimalizuj rozmiar) lub /O2 (Maksymalizuj szybkość).

Składnia

/Og

Uwagi

/Og jest przestarzały. Te optymalizacje są teraz domyślnie włączone, gdy wszystkie optymalizacje są włączone. Aby uzyskać więcej informacji na temat optymalizacji, zobacz , (Minimalizuj rozmiar, Maksymalizuj szybkość) lub /Ox (Włącz większość optymalizacji szybkości). /O2/O1

Następujące optymalizacje są dostępne w obszarze /Og:

  • Eliminacja lokalnego i globalnego wspólnego wyrażenia podrzędnego

    W tej optymalizacji wartość wspólnego podrażenia jest obliczana raz. W poniższym przykładzie, jeśli wartości b i c nie zmieniają się między trzema wyrażeniami, kompilator może przypisać obliczenia b + c do zmiennej tymczasowej i użyć tej zmiennej dla b + celementu :

    a = b + c;
    d = b + c;
    e = b + c;
    

    W przypadku optymalizacji lokalnego wspólnego wyrażenia podrzędnego kompilator sprawdza krótkie sekcje kodu dla typowych podwyrażeń. W przypadku globalnej optymalizacji wspólnego wyrażenia podrzędnego kompilator wyszukuje całe funkcje dla typowych podexpressionów.

  • Automatyczna alokacja rejestru

    Ta optymalizacja umożliwia kompilatorowi przechowywanie często używanych zmiennych i podexpressionów w rejestrach. Słowo register kluczowe jest domyślnie ignorowane i powoduje diagnostykę w obszarze /std:c++17 lub nowszym.

  • Optymalizacja pętli

    Ta optymalizacja usuwa niezmienne podrażenia z treści pętli. Pętla optymalna zawiera tylko wyrażenia, których wartości zmieniają się przez każde wykonanie pętli. W poniższym przykładzie wyrażenie x + y nie zmienia się w treści pętli:

    i = -100;
    while( i < 0 ) {
        i += x + y;
    }
    

    Po optymalizacji jest obliczany raz, a nie za każdym razem, x + y gdy pętla jest wykonywana:

    i = -100;
    t = x + y;
    while( i < 0 ) {
        i += t;
    }
    

    Optymalizacja pętli jest znacznie bardziej skuteczna, gdy kompilator nie może zakładać aliasu, który został ustawiony za pomocą __restrictmetody , noaliaslub restrict.

    Uwaga

    Optymalizację globalną można włączyć lub wyłączyć na podstawie funkcji przy użyciu optimize pragma wraz z opcją g .

Aby uzyskać powiązane informacje, zobacz (Generowanie funkcji wewnętrznych) i /Ox (Włącz większość optymalizacji szybkości)./Oi

Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio

  1. Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).

  2. Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.

  3. Wprowadź opcję kompilatora w polu Dodatkowe opcje .

Aby programowo ustawić tę opcję kompilatora

Zobacz też

Składnia wiersza polecenia kompilatora MSVC