Partager via


Conseils sur les performances .NET

Le terme performances fait généralement référence à la vitesse d’exécution d’un programme. Vous pouvez parfois augmenter la vitesse d’exécution en suivant certaines règles de base dans votre code source. Dans certains programmes, il est important d’examiner étroitement le code et d’utiliser des profils pour s’assurer qu’il s’exécute aussi rapidement que possible. Dans d’autres programmes, vous n’avez pas besoin d’effectuer une telle optimisation, car le code s’exécute de façon acceptable. Cet article répertorie certains domaines courants où les performances peuvent souffrir et des conseils pour l’améliorer, ainsi que des liens vers des rubriques de performances supplémentaires. Pour plus d’informations sur la planification et la mesure des performances, consultez Performances

Conversion boxing et unboxing

Il est préférable de ne pas utiliser de types valeur lorsque ceux-ci doivent être convertis (boxed) de nombreuses fois, par exemple, dans les classes de collections non génériques comme System.Collections.ArrayList. Vous pouvez éviter le boxing des types valeur en utilisant des collections génériques comme System.Collections.Generic.List<T>. Le boxing et l’unboxing sont des processus qui coûtent cher en calcul. Lorsqu’un type valeur est boxé, un objet entièrement nouveau doit être créé. Cela peut prendre jusqu’à 20 fois plus longtemps qu’une simple affectation de référence. Lors d’une conversion unboxing, le processus de cast peut être quatre fois plus long que celui d’une assignation. Pour plus d’informations, consultez Boxing et Unboxing.

Chaînes

Lorsque vous concatènez un grand nombre de variables de chaîne, par exemple dans une boucle serrée, utilisez System.Text.StringBuilder plutôt que l’opérateur C# + ou les opérateurs de concaténation Visual Basic. Pour plus d’informations, consultez Comment concaténer plusieurs chaînes et opérateurs de concaténation dans Visual Basic.

Finaliseurs

Les finaliseurs vides ne doivent pas être utilisés. Lorsqu’une classe contient un finaliseur, une entrée est créée dans la file d’attente Finalise. Quand le finaliseur est appelé, le récupérateur de mémoire est appelé pour traiter la file d’attente. Si le finaliseur est vide, cela entraîne simplement une perte de performances. Pour plus d’informations, consultez Finaliseurs et Durée de vie des objets : Création et destruction d’objets.

Autres ressources

Voir aussi