Microsoft compilateur C++ (cl.exe
, inclus avec Visual Studio) propose plusieurs commutateurs d'optimisation. La différence entre la plupart d'entre eux semblent évidentes, mais il n'est pas clair pour moi ce qu'est la différence entre /O2
(ce qui optimise le code de vitesse maximale) et /Ox
(qui sélectionne les "optimisation").
J'ai essayé la lecture de la documentation pour l' /Ox
option, et il semble confirmer que ce commutateur permet également l'optimisation de la vitesse maximale, plutôt que de taille:
L'
/Ox
option de compilateur produit du code qui favorise la vitesse d'exécution de plus petite taille.
Mais en particulier, l'instruction suivante dans la section "Remarques" a attiré mon attention:
En général, spécifiez
/O2
(Vitesse maximum) au lieu de/Ox
.
Donc ma question est, pourquoi devrait-on généralement faveur /O2
sur /Ox
? La dernière option activer
un particulier de l'optimisation connu pour causer des imprévus bugs ou autre comportement inattendu? Est-ce simplement que le montant de l'optimisation des acquis n'est pas la peine supplémentaires moment de la compilation? Ou est-ce juste un complètement dénuée de sens "recommandation" résultant du fait qu' /O2
est la valeur par défaut de l'option de VS?