web-dev-qa-db-fra.com

Comment les performances sont-elles affectées par une directive using inutilisée?

Visual Studio crée automatiquement des instructions using pour vous chaque fois que vous créez une nouvelle page ou un nouveau projet. Certains d'entre eux ne seront jamais utilisés.

Visual Studio a la fonctionnalité utile pour "supprimer les utilisations inutilisées".

Je me demande s'il y a un effet négatif sur les performances du programme si les instructions using qui ne sont jamais consultées restent mentionnées en haut du fichier.

95
KdgDev

Une utilisation inutilisée n'a aucun impact sur les performances d'exécution de votre application.

Cela peut affecter les performances de IDE et la phase de compilation globale. La raison en est qu'il crée un espace de noms supplémentaire dans lequel la résolution de noms doit se produire. Cependant, ceux-ci ont tendance à être mineurs et ne devraient pas avoir un impact notable sur votre IDE expérience pour la plupart des scénarios.

Il peut également affecter les performances de l'évaluation des expressions dans le débogueur pour les mêmes raisons.

116
JaredPar

Non, c'est juste une chose de style de compilation/codage. Les binaires .NET utilisent des noms complets sous le capot.

13
ChrisV

Le lien suivant ne bonne lecture sur pourquoi supprimer les références inutilisées explique comment il est utile de supprimer les références inutilisées de l'application.

Voici quelques extraits du lien:

  1. En supprimant toutes les références inutilisées dans votre application, vous empêchez le CLR de charger les modules référencés inutilisés lors de l'exécution. Ce qui signifie que vous réduirez le temps de démarrage de votre application, car cela prend du temps pour charger chaque module et évite d'avoir les métadonnées de chargement du compilateur qui ne seront jamais utilisées. Vous pouvez constater qu'en fonction de la taille de chaque bibliothèque, votre temps de démarrage est sensiblement réduit. Cela ne veut pas dire que votre application sera plus rapide une fois chargée, mais il peut être assez pratique de savoir que votre temps de démarrage pourrait être réduit.

  2. Un autre avantage de la suppression des références inutilisées est que vous réduirez le risque de conflits avec les espaces de noms. Par exemple, si vous disposez des deux System.Drawing et System.Web.UI.WebControls référencé, vous pourriez trouver des conflits lorsque vous essayez de référencer la classe Image. Si vous avez utilisé des directives dans votre classe qui correspondent à ces références, le compilateur ne peut pas dire lesquelles utiliser. Si vous utilisez régulièrement la saisie semi-automatique lors du développement, la suppression des espaces de noms inutilisés réduira le nombre de valeurs de saisie semi-automatique dans votre éditeur de texte lors de la frappe.

8

Aucun effet sur la vitesse d'exécution, mais il peut y avoir un léger effet sur la vitesse de compilation/intellisense car il y a plus d'espaces de noms potentiels pour rechercher la classe appropriée. Je ne m'en inquiéterais pas trop, mais vous pouvez utiliser l'élément de menu Organiser les utilisations pour supprimer et trier les instructions using.

7
tvanfosson

Non, plusieurs processus sont impliqués lors de la compilation d'un programme. Lorsque le compilateur commence à rechercher des références (classes, méthodes), il n'utilisera que celles utilisées dans le code. La directive using indique uniquement au compilateur où chercher. Un grand nombre d'instructions using inutilisées peuvent peut-être avoir un problème de performances, mais juste au moment de la compilation. Au moment de l'exécution, tout le code extérieur est correctement lié ou inclus dans le binaire.

4
Freddy

Le code qui ne s'exécute pas n'affecte pas les performances d'un programme.

4
Jeff Leonard