Sdílet prostřednictvím


/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

  1. Otevřete dialogové okno projektu Stránky vlastností.Další informace naleznete v tématu Postupy: Otevření stránek vlastností projektu.

  2. Klikněte na složku C/C++.

  3. Klepněte Optimalizace stránky vlastností.

  4. Změnit něco pro velikost a rychlost vlastnost.

Chcete-li tuto možnost kompilátoru nastavit v programu

Viz také

Referenční dokumentace

/O možnosti (optimalizace kódu)

Možnosti kompilátoru

Nastavení možností kompilátoru