Condividi tramite


/Os, /Ot (favori codice piccolo, favori codice veloce)

Le opzioni del /Os compilatore e /Ot specificano se favorire le dimensioni () o la velocità (/Os/Ot) durante l'ottimizzazione del codice.

Sintassi

/Os
/Ot

Osservazioni:

/Os (Favor Small Code) riduce al minimo le dimensioni di EXEs e DLL indicando al compilatore di favorire le dimensioni rispetto alla velocità. Il compilatore può ridurre molti costrutti C e C++ a sequenze di codice computer simili a livello funzionale. In alcuni casi queste differenze offrono compromessi di dimensioni rispetto alla velocità. Le /Os opzioni e /Ot consentono di specificare una preferenza per una rispetto all'altra:

/Ot (Favor Fast Code) ottimizza la velocità di EXEs e DLL indicando al compilatore di favorire la velocità rispetto alle dimensioni. /Ot è l'impostazione predefinita quando le ottimizzazioni sono abilitate. Il compilatore può ridurre molti costrutti C e C++ a sequenze di codice computer simili a livello funzionale. In alcuni casi, queste differenze offrono compromessi di dimensioni rispetto alla velocità. L'opzione /Ot è implicita nell'opzione /O2 (Ingrandisci velocità). L'opzione /O2 combina diverse opzioni per produrre codice più veloce.

Nota

Le informazioni raccolte dalle esecuzioni dei test di profilatura sostituiscono tutte le ottimizzazioni che altrimenti verrebbero applicate se si specifica /Ob, /Oso /Ot. Per altre informazioni, vedere Ottimizzazioni PGO.

Esempio specifico di x86

Il codice di esempio seguente illustra la differenza tra l'opzione /Os (Favor small code) e l'opzione /Ot (Favor fast code):

Nota

In questo esempio viene descritto il comportamento previsto quando si usa /Os o /Ot. Tuttavia, il comportamento del compilatore dal rilascio alla versione può comportare ottimizzazioni diverse per il codice seguente.

/* 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;
}

Come illustrato nel frammento di codice del computer riportato di seguito, quando differ.c viene compilato per le dimensioni (/Os), il compilatore implementa l'espressione di moltiplicazione nell'istruzione return in modo esplicito come moltiplicazione per produrre una sequenza di codice breve ma più lenta:

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

In alternativa, quando differ.c viene compilato per velocità (/Ot), il compilatore implementa l'espressione di moltiplicazione nell'istruzione return come una serie di istruzioni e LEA di spostamento per produrre una sequenza di codice veloce ma più lunga:

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

Per impostare l'opzione del compilatore nell'ambiente di sviluppo di Visual Studio

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.

  2. Selezionare la pagina delle>proprietà Proprietà di configurazione C/C++>Optimization.

  3. Modificare la proprietà Favor Size o Speed .

Per impostare l'opzione del compilatore a livello di codice

Vedi anche

Opzioni /O (ottimizzare il codice)
Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC