Udostępnij za pośrednictwem


/Os, /Ot (Preferuj mały kod, Preferuj szybki kod)

Zmniejsza lub zwiększa rozmiar plików exe i biblioteki dll.

/Os
/Ot

Uwagi

/Os(Kod małych korzyść) minimalizuje rozmiar plików exe i biblioteki DLL nakazując kompilator na rzecz rozmiar kosztem szybkości.Kompilator może zmniejszyć wielu konstrukcje C i C++ do sekwencji funkcjonalnie podobne kod maszynowy.Od czasu do czasu różnice te oferują kompromisy rozmiar w zależności od szybkości./Os i /Ot opcje pozwalają określić preferencje dla siebie:

/Ot(Korzyść szybko kod) maksymalizuje szybkość bibliotek DLL i exe nakazując kompilator na rzecz prędkości powyżej wielkości. (Jest to wartość domyślna). Kompilator może zmniejszyć wielu konstrukcje C i C++ do sekwencji funkcjonalnie podobne kod maszynowy.Od czasu do czasu różnice te oferują kompromisy rozmiar w zależności od szybkości.Opcja /Ot jest implikowane przez zmaksymalizować szybkość (/O2) opcji./O2 Opcji łączy w sobie kilka opcji do tworzenia kodu bardzo szybko.

Jeśli używasz /Os lub /Ot, a następnie należy także określić /Og do optymalizacji kodu.

[!UWAGA]

Informacje zebrane podczas profilowania przebiegu testowego zastępują optymalizacje, które normalnie byłyby, jeśli zostanie określony /Ob, /Os, lub /Ot.Aby uzyskać więcej informacji, zobacz Optymalizacje sterowane profilem

x 86 szczególne

Poniższy przykład kodu pokazuje różnicę między kod małych korzyść (/Os) opcje i korzyść szybko kod (/Ot) opcja:

[!UWAGA]

Niżej przedstawiono oczekiwane zachowanie podczas korzystania z /Os lub /Ot.Jednakże zachowanie kompilatora w wersji release może skutkować różne opcje optymalizacji dla poniższy kod.

/* 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 pokazano we fragmencie kodu maszynowego poniżej, gdy DIFFER.c jest kompilowany dla rozmiaru (/Os), wdraża kompilator pomnożyć wyrażenie w instrukcji return jawnie jako mnożenie do produkcji krótki, ale wolniej sekwencji kodu:

   mov    eax, DWORD PTR _x$[ebp]
   imul   eax, 71                  ; 00000047H

Na przemian, kiedy DIFFER.c jest kompilowany dla prędkości (/Ot), wdraża kompilatora pomnożyć wyrażenie w instrukcji return jako seria shift i LEA instrukcje do produkcji szybki, ale dłużej sekwencji kodu:

   mov    eax, DWORD PTR _x$[ebp]
   mov    ecx, eax
   shl    eax, 3
   lea    eax, DWORD PTR [eax+eax*8]
   sub    eax, ecx

KONIEC x 86 szczególne

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

  1. Otwórz okno dialogowe Strony właściwości projektu.Szczegółowe informacje – zobacz: Porady: otwieranie stron właściwości projektów.

  2. Kliknij folder C/C++.

  3. Kliknij przycisk optymalizacji strona właściwości.

  4. Modyfikowanie korzyść rozmiaru lub prędkości właściwości.

Aby programowo ustawić tę opcję kompilatora

Zobacz też

Informacje

/O Opcje (optymalizuj kod)

Opcje kompilatora

Ustawianie opcji kompilatora