Optimisation du code

En optimisant un exécutable, vous pouvez obtenir un équilibre entre une vitesse d’exécution rapide et une petite taille de code. Cette rubrique décrit certains des mécanismes fournis par Visual Studio pour vous aider à optimiser le code.

Fonctionnalités de langage

Les rubriques suivantes décrivent certaines des fonctionnalités d’optimisation dans le langage C/C++.

Pragmas et mots clés de l’optimisation
Liste des mot clé et pragmas que vous pouvez utiliser dans votre code pour améliorer les performances.

Options du compilateur classées par catégorie
Liste des options du compilateur /O qui affectent spécifiquement la vitesse d’exécution ou la taille du code.

Déclarateur de référence Rvalue : &&
Les références Rvalue prennent en charge l’implémentation de la sémantique de déplacement. Si la sémantique de déplacement est utilisée pour implémenter des bibliothèques de modèles, les performances des applications qui utilisent ces modèles peuvent considérablement améliorer.

Le pragma d’optimisation

Si une section optimisée du code provoque des erreurs ou un ralentissement, vous pouvez utiliser le pragma d’optimisation pour désactiver l’optimisation pour cette section.

Placez le code entre deux pragmas, comme illustré ici :

#pragma optimize("", off)
// some code here
#pragma optimize("", on)

Pratiques de programmation

Vous remarquerez peut-être des messages d’avertissement supplémentaires lorsque vous compilez votre code avec optimisation. Ce comportement est attendu, car certains avertissements concernent uniquement le code optimisé. Vous pouvez éviter de nombreux problèmes d’optimisation si vous avez répondu à ces avertissements.

Paradoxal, l’optimisation d’un programme pour la vitesse peut entraîner l’exécution plus lente du code. Cela est dû au fait que certaines optimisations pour accélérer l’augmentation de la taille du code. Par exemple, les fonctions d’incorporation éliminent la surcharge des appels de fonction. Toutefois, l’incorporation de trop de code peut rendre votre programme si volumineux que le nombre d’erreurs de page de mémoire virtuelle augmente. Par conséquent, la vitesse obtenue lors de l’élimination des appels de fonction peut être perdue en échange de mémoire.

Les rubriques suivantes décrivent les bonnes pratiques de programmation.

Conseils pour l’amélioration du code à durée critique
De meilleures techniques de codage peuvent améliorer les performances. Cette rubrique suggère des techniques de codage qui peuvent vous aider à vous assurer que les parties critiques temporelles de votre code s’exécutent de manière satisfaisante.

Optimisation, bonnes pratiques
Fournit des instructions générales sur la meilleure façon d’optimiser votre application.

Débogage du code optimisé

Étant donné que l’optimisation peut modifier le code créé par le compilateur, nous vous recommandons de déboguer votre application et de mesurer ses performances, puis d’optimiser votre code.

Les rubriques suivantes fournissent des informations sur la façon de déboguer les builds de mise en production.

Les rubriques suivantes fournissent des informations sur l’optimisation de la génération, du chargement et de l’exécution de votre code.

Contenu de cette section

Pragmas et mots clés de l’optimisation
Amélioration du débit du compilateur
Pourquoi les nombres à virgule flottante peuvent manquer de précision
Représentation à virgule flottante IEEE
Conseils pour l’amélioration du code à durée critique
L’utilisation d’un nom de fonction sans () ne génère pas de code
Optimisation, bonnes pratiques
Optimisations guidées par profil
Variables d’environnement pour les optimisations guidées par profil
PgoAutoSweep
pgomgr
pgosweep
Guide pratique pour fusionner plusieurs profils PGO en un seul profil

Voir aussi

Référence à la génération C/C++