Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

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.

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.

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).

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).

Ajouts de la communauté

Afficher: