/Og
(Optimisations globales)
Action déconseillée. Fournit des optimisations locales et globales, une allocation d’inscription automatique et une optimisation de boucle. Nous vous recommandons d’utiliser à /O1
la place (Réduire la taille) ou /O2
(Agrandir la vitesse).
Syntaxe
/Og
Notes
/Og
est déconseillé. Ces optimisations sont désormais activées par défaut quand toutes les optimisations sont activées. Pour plus d’informations sur les optimisations, consultez , (Réduire la taille, agrandir la vitesse) ou /Ox
(Activer la plupart des optimisations de vitesse). /O2
/O1
Les optimisations suivantes sont disponibles sous /Og
:
Élimination des sous-expressions courantes locales et globales
Dans cette optimisation, la valeur d’une sous-expression commune est calculée une seule fois. Dans l’exemple suivant, si les valeurs des
b
c
trois expressions et ne changent pas, le compilateur peut affecter le calcul d’uneb + c
variable temporaire et utiliser cette variable pourb + c
:a = b + c; d = b + c; e = b + c;
Pour l’optimisation des sous-expressions courantes locales, le compilateur examine les sections courtes du code pour les sous-expressions courantes. Pour l’optimisation globale des sous-expressions courantes, le compilateur recherche des sous-expressions communes dans l’ensemble des fonctions.
Allocation d’inscription automatique
Cette optimisation permet au compilateur de stocker des variables et des sous-expressions fréquemment utilisées dans les registres. Le
register
mot clé est ignoré par défaut et provoque un diagnostic sous ou une/std:c++17
version ultérieure.Optimisation de la boucle
Cette optimisation supprime les sous-expressions invariantes du corps d’une boucle. Une boucle optimale contient uniquement les expressions dont les valeurs changent par le biais de chaque exécution de la boucle. Dans l’exemple suivant, l’expression
x + y
ne change pas dans le corps de la boucle :i = -100; while( i < 0 ) { i += x + y; }
Après l’optimisation,
x + y
est calculée une fois plutôt que chaque fois que la boucle est exécutée :i = -100; t = x + y; while( i < 0 ) { i += t; }
L’optimisation des boucles est beaucoup plus efficace lorsque le compilateur ne peut supposer aucun alias, que vous définissez avec
__restrict
,noalias
ourestrict
.Remarque
Vous pouvez activer ou désactiver l’optimisation globale sur une base de fonction par fonction à l’aide du
optimize
pragma avec l’optiong
.
Pour plus d’informations, consultez (Générer des fonctions intrinsèques) et /Ox
(Activer la plupart des optimisations de vitesse)./Oi
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 Définir le compilateur C++ et les propriétés de build dans Visual Studio.
Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.
Entrez l’option du compilateur dans la zone Options supplémentaires.
Pour définir cette option du compilateur par programmation
- Consultez AdditionalOptions.
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour