/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
, /Os
o /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
Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.
Selezionare la pagina delle>proprietà Proprietà di configurazione C/C++>Optimization.
Modificare la proprietà Favor Size o Speed .
Per impostare l'opzione del compilatore a livello di codice
- Vedere FavorSizeOrSpeed.
Vedi anche
Opzioni /O (ottimizzare il codice)
Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC