/Os, /Ot (Upřednostnit malý kód, upřednostnit rychlý kód)
Minimalizuje nebo maximalizuje velikost exe a DLL.
/Os
/Ot
Poznámky
/Os(Něco pro malé kód) minimalizuje velikost exe a DLL tím odebíraném kompilátoru při kompresi velikost před rychlostí.Kompilátor může snížit počet konstrukce jazyka C a C++ funkčně podobné sekvence strojový kód.Tyto rozdíly v některých případech nabízejí poměry velikosti a rychlosti./Os a /Ot možnosti slouží k určení předvoleb pro jeden přes druhého:
/Ot(Něco pro rychlé kód) maximalizuje rychlost exe a DLL pomocí instrukce kompilátor upřednostnit rychlost přes velikost. (Toto je výchozí nastavení). Kompilátor může snížit počet konstrukce jazyka C a C++ funkčně podobné sekvence strojový kód.Tyto rozdíly v některých případech nabízejí poměry velikosti a rychlosti.Možnost /Ot je zahrnuto v maximální rychlosti (/O2) možnost./O2 Možnost kombinuje několik možností vytvoření kódu, velmi rychle.
Použijete-li /Os nebo /Ot, pak je nutné zadat /Og optimalizovat kód.
[!POZNÁMKA]
Informace shromážděné z testovacích běhů profilování přepíší optimalizace, které by byly jinak aktivní v případě zadání možnosti /Ob, /Os nebo /Ot.Více informací naleznete v tématu Optimalizace na základě profilu.
x 86 konkrétní
Následující příklad kódu ukazuje rozdíl mezi malé kód svého (/Os) možnosti a něco pro rychlé kód (/Ot) možnost:
[!POZNÁMKA]
Následuje popis očekávané chování při použití /Os nebo /Ot.Nicméně kompilátor chování od vydání verze může mít za následek různé optimalizace pro následující kód.
/* 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 ukazuje fragment strojový kód níže, při kompilaci DIFFER.c velikost (/Os), implementuje kompilátoru násobení výrazů v příkaz return explicitně jako násobit vydat krátký, ale pomalejší sekvenci kódu:
mov eax, DWORD PTR _x$[ebp]
imul eax, 71 ; 00000047H
Alternativně při kompilaci DIFFER.c pro rychlost (/Ot), implementuje kompilátoru násobení výrazů v příkaz return jako série shift a LEA pokyny pro vytvoření rychlé, ale delší sekvence kódu:
mov eax, DWORD PTR _x$[ebp]
mov ecx, eax
shl eax, 3
lea eax, DWORD PTR [eax+eax*8]
sub eax, ecx
Konec x 86 konkrétní
Chcete-li nastavit tuto možnost kompilátoru ve vývojovém prostředí Visual Studio
Otevřete dialogové okno projektu Stránky vlastností.Další informace naleznete v tématu Postupy: Otevření stránek vlastností projektu.
Klikněte na složku C/C++.
Klepněte Optimalizace stránky vlastností.
Změnit něco pro velikost a rychlost vlastnost.
Chcete-li tuto možnost kompilátoru nastavit v programu
- Další informace naleznete v tématu FavorSizeOrSpeed.