Optimisation du code
En optimisant un fichier exécutable, vous pouvez atteindre un équilibre entre vitesse d'exécution et taille de code minime. Cette rubrique décrit certains mécanismes fournis par Visual C++ pour vous aider à optimiser le code.
Fonctionnalités de langage
Les rubriques suivantes décrivent certaines des fonctionnalités d'optimisation des langages C/C++.
Pragmas et mots clés de l'optimisation
Liste de mots clés et pragmas que vous pouvez utiliser dans votre code pour améliorer les performances.Options du compilateur classées par catégorie
Liste d'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 utilisant ces modèles peuvent être considérablement améliorées.
Pragma optimize
Si une section de code optimisée provoque des erreurs ou un ralentissement, vous pouvez utiliser le pragma optimize pour désactiver l'optimisation de cette section.
Incluez le code entre deux pragmas, comme suit.
#pragma optimize("", off)
// some code here
#pragma optimize("", on)
Méthodes de programmation
Vous pouvez remarquer des messages d'avertissement supplémentaires lorsque vous compilez votre code avec l'optimisation. Ce comportement est normal car certains avertissements concernent uniquement le code optimisé. Vous pouvez éviter de nombreux problèmes d'optimisation en tenant compte de ces avertissements.
Paradoxalement, l'optimisation d'un programme pour gagner en vitesse peut provoquer un ralentissement de l'exécution du code. Ceci s'explique parce que certaines optimisations destinées à gagner de la vitesse augmentent la taille du code. Par exemple, l'incorporation de fonctions éliminent les charges mémoire des appels de fonction. Toutefois, l'incorporation de fonctions sur une trop grande quantité de code peut augmenter la taille de votre programme, et avec, le nombre d'erreurs de page de la mémoire virtuelle. Par conséquent, le gain obtenu en termes de vitesse par l'élimination des appels aux fonctions peut être annulé par le phénomène d'échange de mémoire.
Les rubriques suivantes décrivent les meilleures pratiques de programmation.
Conseils pour l'amélioration du code à durée critique
De meilleures techniques de codage peuvent produire de meilleures performances. Cette rubrique propose des techniques de codage qui peuvent vous aider à garantir que les parties à durée critique de votre code s'exécutent correctement.Meilleures pratiques pour l'optimisation
Fournit des recommandations générales pour une bonne optimisation de votre application.
Débogage de code optimisé
Dans la mesure où 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 de base sur le débogage.
Les rubriques suivantes fournissent des informations plus approfondies sur le débogage.
La série de rubriques suivantes fournit des informations sur l'optimisation de la génération, du chargement et de l'exécution de votre code.
L'utilisation d'un nom de fonction sans () ne génère pas de code
Spécification de l'optimisation du compilateur pour un projet ATL
Pour plus d'informations sur la réduction du temps de chargement des méthodes DLL, consultez les détails relatifs à l'optimisation des performances du temps de chargement des DLL dans la rubrique « Sous le capot » (éventuellement en anglais) de « MSDN Magazine » sur le site Web MSDN Library (éventuellement en anglais).
Pour plus d'informations sur la réduction de la pagination dans les applications, consultez les détails (en deux parties) relatifs à l'amélioration des performances d'exécution grâce à l'outil Smooth Working Set dans la rubrique « Tueur de bogues » (éventuellement en anglais) de « MSDN Magazine » sur le site Web MSDN Library (éventuellement en anglais).