Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Možnosti kompilátoru /Os /Ot určují, jestli se má při optimalizaci kódu upřednostňovat velikost (/Os) nebo rychlost (/Ot).
Syntaxe
/Os
/Ot
Poznámky
/Os (Upřednostnění malého kódu) minimalizuje velikost exes a knihoven DLL pokynem kompilátoru, aby upřednostňuje velikost přes rychlost. Kompilátor může snížit množství konstruktorů jazyka C a C++ na funkčně podobné sekvence strojového kódu. V některých případech tyto rozdíly nabízejí kompromisy mezi velikostí a rychlostí. /Ot Možnosti /Os umožňují určit předvolbu pro jednu z nich:
/Ot (Upřednostněte rychlý kód) maximalizuje rychlost exes a knihoven DLL tím, že kompilátoru dává pokyn, aby upřednostňoval rychlost nad velikostí. /Ot je výchozí, pokud jsou povoleny optimalizace. Kompilátor může snížit množství konstruktorů jazyka C a C++ na funkčně podobné sekvence strojového kódu. V některých případech tyto rozdíly nabízejí kompromisy mezi velikostí a rychlostí. Možnost /Ot je odvozena /O2 z možnosti (Maximalizovat rychlost). Tato /O2 možnost kombinuje několik možností pro rychlejší vytváření kódu.
Poznámka:
Informace shromážděné z profilace testovacích běhů přepíší všechny optimalizace, které by jinak platit, pokud zadáte /Ob, /Osnebo /Ot. Další informace najdete v tématu Optimalizace s asistencí profilu.
Příklad specifický pro x86
Následující ukázkový kód ukazuje rozdíl mezi /Os možností (Favor small code) a možností (Upřednostnění rychlého /Ot kódu):
Poznámka:
Tento příklad popisuje očekávané chování při použití /Os nebo /Ot. Chování kompilátoru z verze do vydání však může vést k různým optimalizacem kódu níže.
/* 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;
}
Jak je znázorněno v fragmentu kódu počítače níže, při differ.c kompilaci pro velikost (/Os), kompilátor implementuje výraz násobení v příkazu return explicitně jako násobení, aby vytvořil krátkou, ale pomalejší sekvenci kódu:
mov eax, DWORD PTR _x$[ebp]
imul eax, 71 ; 00000047H
differ.c Pokud je kompilátor zkompilován pro rychlost (/Ot), kompilátor implementuje výraz násobení ve návratovém příkazu jako řadu směn a LEA instrukcí, aby vytvořil rychlou, ale delší sekvenci kódu:
mov eax, DWORD PTR _x$[ebp]
mov ecx, eax
shl eax, 3
lea eax, DWORD PTR [eax+eax*8]
sub eax, ecx
Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio
Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.
Vyberte stránku vlastností konfigurace>C/C++>Optimization.
Upravte vlastnost Upřednostnění nebo Rychlost.
Programové nastavení tohoto parametru kompilátoru
- Viz třída FavorSizeOrSpeed.
Viz také
/O options (Optimalizace kódu)
Možnosti kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC