Partager via


Performances (C# et Visual Basic)

Le terme performance désigne généralement la vitesse d'exécution d'un programme. Vous pouvez parfois accroître cette vitesse d'exécution en suivant certaines règles élémentaires dans votre code source. Dans certains programmes, il est primordial d'examiner avec soin le code et d'utiliser des profileurs pour s'assurer que l'exécution de ce code est aussi rapide que possible. Dans d'autres programmes, cette optimisation n'est pas nécessaire puisque l'exécution du code est tout aussi acceptable que la qualité de son écriture.

Lorsque vous mesurez des performances et cherchez à les optimiser, vous devez suivre les instructions générales suivantes :

  • Commencez par définir des objectifs de performance et mesurez les performances du programme lorsque votre code ne remplit pas ces objectifs.

  • Veillez à écrire correctement votre code dès le départ, suivez des principes de conception appropriées et déterminer de manière claire vos intentions. Par la suite, optimisez votre code si vous estimez qu'il ne satisfait pas aux objectifs de performance fixés. Un code optimisé à des fins de performance est souvent plus difficile à lire et à maintenir. En règle générale, il est préférable d'écrire un code qui est lisible, robuste et facile à gérer même si ses performances sont légèrement en deçà du code le plus optimisé dont vous rêvez.

  • Si vous devez procéder à une optimisation, commencez par les parties les plus lentes de votre code. Si vous évaluez qu'un programme ne répond pas à vos objectifs de performance, identifiez les emplacements spécifiques où les performances peuvent être améliorées et quels problèmes de performance sont la source principale du problème. L'optimisation d'une méthode rarement appelée n'a pas d'intérêt, tout comme celle d'une méthode A à exécuter en moins de 50 millisecondes si le programme dans son intégralité doit patienter 30 secondes pour exécuter la méthode B sur un autre thread.

Boxing et unboxing

Il vaut mieux éviter d'utiliser des types valeur dans les cas où ils doivent faire l'objet de nombreuses opérations de boxing, 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 très onéreux en calcul. Lorsqu'un type valeur est converti (boxed), un objet entièrement nouveau doit être créé. Cette opération peut être 20 fois plus longue qu'une simple assignation de référence. Lors de l'unboxing, le processus de casting peut prendre jusqu'à quatre fois le temps d'une assignation. Pour plus d'informations, consultez Conversion boxing et unboxing.

Chaînes

Lorsque vous concaténez un grand nombre de variables 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 (Guide de programmation C#) et Opérateurs de concaténation (Visual Basic).

Destructeurs

Les destructeurs vides ne doivent pas être utilisés. Lorsqu'une classe contient un destructeur, une entrée est créée dans la file d'attente Finalize. Lorsque le destructeur est appelé, le garbage collector est appelé pour traiter la file d'attente. Si le destructeur est vide, cela se solde simplement par une perte de performance. Pour plus d'informations, consultez Destructeurs (Guide de programmation C#) et Durée de vie d'un objet : création et destruction des objets (Visual Basic).

Autres ressources

Voir aussi

Concepts

Guide de programmation C#

Autres ressources

Concepts de programmation

Guide de programmation Visual Basic