2009-07-22 5 views
68

Visual Studio crée automatiquement des instructions à l'aide de vos instructions lorsque vous créez une nouvelle page ou un nouveau projet. Certains d'entre vous ne seront jamais utilisés. Visual Studio a la fonction utile pour "supprimer les utilisations inutilisées".En quoi les performances sont-elles affectées par une directive d'utilisation inutilisée?

Je me demande s'il existe 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.

+0

Je l'ai cherché avant de le demander, et il ne s'est pas présenté. – KdgDev

+5

FWIW, cet article a un meilleur référencement: c'était le premier résultat de Google pour moi. Parmi les 2 originaux liés, un est indisponible (supprimé) et l'autre est libellé différemment pour ajouter de la valeur à ce post, même si ce n'est qu'une redirection. – DaveD

Répondre

86

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

Cela peut affecter les performances de l'EDI 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 avoir lieu. Cependant, ceux-ci ont tendance à être mineures et ne devraient pas avoir un impact notable sur votre expérience IDE 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.

+21

Plus il y a d'utilisations, plus l'Intellisense sera lent – Heliac

11

Non, c'est juste une compilation/un style de codage. Les binaires .NET utilisent des noms entièrement qualifiés sous le capot.

+1

Cela signifie-t-il que les noms de classe et de méthode plus longs ont un impact faible mais réel (si incommensurable) sur les temps de compilation JIT? –

5

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'inquiéterais pas trop à ce sujet, mais vous pouvez utiliser l'élément de menu Organiser les descriptions pour supprimer et trier les instructions using.

4

Non, plusieurs processus sont impliqués lors de la compilation d'un programme. Lorsque le compilateur commencera à rechercher des références (classes, méthodes), il n'utilisera que celles utilisées sur le code. La directive using indique seulement au compilateur où regarder. Un grand nombre d'instructions d'utilisation inutilisées peut-être avoir un problème de performance, 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.

5

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

1

Le lien suivant A good read on why to remove unused references explique comment il est utile de supprimer les références inutilisées de l'application.

Voici les quelques extraits du lien:

  1. en supprimant les références non utilisées dans votre application, vous êtes empêchant la CLR de charger les modules référencés inutilisés à exécution. Cela signifie que vous réduirez le temps de démarrage de votre application , car il faut 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 trouver 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 très utile 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 conflit avec les espaces de noms . Par exemple, si vous avez à la fois System.Drawing et System.Web.UI.WebControls référencé, vous pourriez trouver des conflits en essayant de référencer la classe Image.Si vous utilisez 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 au cours de la frappe.

Questions connexes