/Os, /Ot (Favoriser la taille du code, Favoriser la vitesse du code)
Mise à jour : novembre 2007
Réduit ou agrandit la taille des fichiers EXE et des DLL.
/Os
/Ot
Notes
/Os (Favoriser la taille du code) réduit la taille des fichiers EXE et des DLL en indiquant au compilateur de favoriser la taille par rapport à la vitesse. Le compilateur peut réduire de nombreuses constructions C et C++ à des séquences de code machine au fonctionnement similaire. Parfois, ces différences offrent des compromis taille/vitesse. Les options /Os et /Ot permettent de spécifier une préférence pour l'une par rapport à l'autre :
/Ot (Favoriser la vitesse du code) augmente la vitesse des fichiers EXE et des DLL en indiquant au compilateur de favoriser la vitesse par rapport à la taille. (Il s'agit du paramètre par défaut.) Le compilateur peut réduire de nombreuses constructions C et C++ à des séquences de code machine au fonctionnement similaire. Parfois, ces différences offrent des compromis taille/vitesse. L'option /Ot est implicite du fait de /O2/O1, /O2 (Réduire la taille, augmenter la vitesse) (Augmenter la vitesse). L'option /O2 combine plusieurs options pour produire un code très rapide.
Si vous utilisez /Os ou /Ot, vous devez également spécifier /Og/Og (Optimisations globales) pour optimiser le code.
Remarque : |
---|
Les informations collectées à partir des séries de tests de profilage substituent les optimisations qui s'appliqueraient si vous spécifiez /Ob, /Os ou /Ot. Pour plus d'informations, consultez Optimisations guidées par profil. |
Spécifique x86
L'exemple de code suivant montre la différence entre les options /Os (Favoriser la taille du code) et l'option /Ot (Favoriser la vitesse du code) :
Remarque : |
---|
Les éléments suivants décrivent le comportement attendu lors de l'utilisation de /Os ou /Ot. Cependant, le comportement du compilateur d'une version à une autre peut produire différentes optimisations pour le code ci-dessous. |
/* 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;
}
Comme le montre le fragment de code machine ci-dessous, quand DIFFER.c est compilé avec une option de taille (/Os), le compilateur implémente l'expression de multiplication dans l'instruction de retour explicitement en tant que multiplication afin de produire une séquence de code courte, mais plus lente :
mov eax, DWORD PTR _x$[ebp]
imul eax, 71 ; 00000047H
Sinon, quand DIFFER.c est compilé en fonction de la vitesse (/Ot), le compilateur implémente l'expression de multiplication dans l'instruction de retour en tant que série d'instructions de décalage et LEA pour produire une séquence de code rapide, mais plus longue :
mov eax, DWORD PTR _x$[ebp]
mov ecx, eax
shl eax, 3
lea eax, DWORD PTR [eax+eax*8]
sub eax, ecx
FIN Spécifique x86
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d'informations, consultez Comment : ouvrir les pages de propriétés d'un projet.
Cliquez sur le dossier C/C++.
Cliquez sur la page de propriétés Optimisation.
Modifiez la propriété Privilège à la taille ou à la vitesse.
Pour définir cette option du compilateur par programme
- Consultez FavorSizeOrSpeed.