Conseils relatifs aux performances .NET
Le terme performances désigne généralement 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 attentivement le code et d’utiliser des profileurs pour garantir que le programme s’exécute aussi rapidement que possible. Dans d’autres programmes, vous n’avez pas à effectuer une telle optimisation, car le code, tel qu’il est écrit, est suffisamment rapide. Cet article répertorie les zones dont les performances sont fréquemment impactées, et fournit des conseils d’amélioration, ainsi que des liens vers d’autres rubriques relatives aux performances. 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 converti (boxed), un tout nouvel objet doit être créé. Cela peut être 20 fois plus long qu’une simple assignation 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 Conversion 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 au lieu de l’opérateur + C# ou des opérateurs de concaténation Visual Basic. Pour plus d’informations, consultez Comment : concaténer plusieurs chaînes et Opérateurs de concaténation en Visual Basic.
Finaliseurs
Les finaliseurs vides ne doivent pas être utilisés. Quand une classe contient un finaliseur, une entrée est créée dans la file d’attente Finalize. 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 d’un objet : création et destruction des objets.
Autres ressources
Rico Mariani’s Performance Tidbits (Blog de Rico Mariani sur les performances)