Share via


Optimisation du code

Mise à jour : novembre 2007

L'optimisation désigne le processus de réglage fin du fonctionnement de l'exécutable en vue d'obtenir les meilleures performances et la plus petite quantité de code possibles. Visual C++ met en œuvre les mécanismes d'optimisation de code suivants :

Amélioration des performances du programme

Pour plus d'informations sur la manière dont les méthodes de programmation appropriées peuvent améliorer l'exécution du programme, consultez :

À propos de l'optimisation du code

Dans la mesure où l'optimisation modifie le code créé par le compilateur, il est préférable d'optimiser le code après l'avoir complètement testé et débogué. Vous pouvez ainsi déboguer le code qui correspond étroitement à votre code source, sans vous soucier des effets de l'optimisation. Une fois que vous avez appliqué les optimisations, vous devez tester le code de nouveau. Parfois, le code change de comportement après l'application des optimisations. En ce cas, vous devez peut-être déboguer le code optimisé. Consultez également Problèmes courants lors de la création d'une version release pour plus d'informations.

Le code optimisé donne parfois des réponses différentes non pas à cause d'une erreur, mais parce que l'optimisation change l'ordre des calculs, d'où des résultats légèrement différents, compte tenu des limites de la précision à virgule flottante.

Vous pouvez également remarquer la présence de quelques messages d'avertissement supplémentaires lorsque vous compilez le code avec l'optimisation. Ce comportement est normal car certains avertissements se rapportent uniquement au code optimisé. Si vous prêtez attention à ces avertissements, vous pourrez éviter la plupart des problèmes liés à l'optimisation.

Paradoxalement, l'optimisation d'un programme en vue d'accélérer son exécution peut parfois avoir l'effet inverse, car certaines optimisations destinées à produire cette accélération se traduisent en fait par une augmentation de la taille du code. L'utilisation de fonctionnalités inline, par exemple, élimine le temps système des appels aux fonctions, mais le traitement inline d'une trop grande quantité de code peut augmenter la taille de votre programme au point d'en multiplier le nombre d'erreurs de page dans 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. Pour cette raison, il convient de mesurer les performances de votre programme avant et après l'application des optimisations. Pour obtenir des instructions générales sur la meilleure méthode d'optimisation de votre application, consultez Méthodes conseillées pour l'optimisation.

Pragma optimize

Si une section de votre code génère des erreurs ou un ralentissement en rapport avec l'optimisation, vous pouvez utiliser le pragma optimize afin de désactiver l'optimisation pour cette section. Placez le code entre deux pragmas, comme ceci :

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

Rubriques supplémentaires

Pour des rubriques supplémentaires sur l'optimisation, consultez :

Pour plus d'informations sur la réduction de la durée de chargement des méthodes DLL, consultez l'article « Optimizing DLL Load Time Performance », dans la colonne « Under the Hood » de « MSDN Magazine », dans la base de connaissances MSDN Library.

Pour plus d'informations sur la réduction de la pagination dans les applications, consultez les parties 1 et 2 de l'article « Improving Runtime Performance with the Smooth Working Set Tool », dans la colonne « Bugslayer » de « MSDN Magazine » de MSDN Library.

Voir aussi

Autres ressources

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