Sdílet prostřednictvím


/Og (Globální optimalizace)

Zastaralé Poskytuje místní a globální optimalizace, automatické přidělování registru a optimalizaci smyčky. Doporučujeme místo toho použít /O1 buď (minimalizovat velikost), nebo /O2 (maximalizovat rychlost).

Syntaxe

/Og

Poznámky

/Og je zastaralý. Tyto optimalizace jsou teď ve výchozím nastavení povolené, pokud jsou povoleny všechny optimalizace. Další informace o optimalizacích naleznete v tématu /O1, /O2 (minimalizace velikosti, maximalizace rychlosti) nebo/Ox(povolení většiny optimalizací rychlosti).

Následující optimalizace jsou k dispozici v části /Og:

  • Eliminace místních a globálních běžných dílčích výrazů

    V této optimalizaci se hodnota společného dílčího výrazu vypočítá jednou. V následujícím příkladu platí, že pokud se hodnoty b tří výrazů nezmění c , kompilátor může přiřadit výpočet b + c dočasné proměnné a tuto proměnnou použít pro b + c:

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

    Pro místní běžnou optimalizaci dílčích výrazů kompilátor zkoumá krátké části kódu pro běžné dílčí výrazy. Pro globální běžnou optimalizaci dílčích výrazů kompilátor prohledává celé funkce pro běžné dílčí výrazy.

  • Automatické přidělení registru

    Tato optimalizace umožňuje kompilátoru ukládat často používané proměnné a dílčí výrazy v registrech. Klíčové register slovo se ve výchozím nastavení ignoruje a způsobí diagnostiku pod /std:c++17 nebo novějším.

  • Optimalizace smyčky

    Tato optimalizace odebere z těla smyčky invariantní dílčí výrazy. Optimální smyčka obsahuje pouze výrazy, jejichž hodnoty se mění při každém spuštění smyčky. V následujícím příkladu se výraz x + y nezmění v textu smyčky:

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

    Po optimalizaci se vypočítá jednou místo pokaždé, x + y když se smyčka spustí:

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

    Optimalizace smyčky je mnohem efektivnější, když kompilátor nemůže předpokládat žádné aliasy, které nastavíte pomocí __restrict, noaliasnebo restrict.

    Poznámka

    Globální optimalizaci můžete povolit nebo zakázat na základě funkce pomocí direktivy optimizeg pragma společně s možností.

Související informace najdete v tématech /Oi (Generování vnitřních funkcí) a/Ox(povolení většiny optimalizací rychlosti).

Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.

  2. Vyberte stránku vlastností příkazového řádku C/C++>Vlastnosti>konfigurace.

  3. Do pole Další možnosti zadejte možnost kompilátoru.

Programové nastavení tohoto parametru kompilátoru

Viz také

Syntaxe příkazového řádku kompilátoru MSVC