/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