Wie wirkt sich eine nicht verwendete Verwendungsrichtlinie auf die Leistung aus?

110

Visual Studio erstellt automatisch Anweisungen für Sie, wenn Sie eine neue Seite oder ein neues Projekt erstellen. Einige davon werden Sie niemals verwenden.

Visual Studio verfügt über die nützliche Funktion "Nicht verwendete Verwendungen entfernen".

Ich frage mich, ob sich dies negativ auf die Programmleistung auswirkt, wenn die using-Anweisungen, auf die nie zugegriffen wird, oben in der Datei erwähnt werden.

KdgDev
quelle
Ich habe danach gesucht, bevor ich gefragt habe, und es ist nicht aufgetaucht.
KdgDev
6
FWIW, dieses Posting hat eine bessere SEO: Es war das erste Ergebnis in Google für mich. Von den beiden verknüpften Originalen ist eines nicht verfügbar (entfernt) und das andere ist anders formuliert, um diesem Beitrag einen Mehrwert zu verleihen, auch wenn es sich nur um eine Weiterleitung handelt.
DaveD
@ DaveD zuerst für Sie, da Google Ihre genauen Einstellungen und Ihren Suchverlauf kennt. Im Computer meines Freundes war nicht der erste.
Ilias Iliadis

Antworten:

133

Eine nicht verwendete Verwendung hat keine Auswirkungen auf die Laufzeitleistung Ihrer Anwendung.

Dies kann die Leistung der IDE und die gesamte Kompilierungsphase beeinträchtigen. Der Grund dafür ist, dass ein zusätzlicher Namespace erstellt wird, in dem die Namensauflösung erfolgen muss. Diese sind jedoch in der Regel geringfügig und sollten in den meisten Szenarien keine spürbaren Auswirkungen auf Ihre IDE-Erfahrung haben.

Aus den gleichen Gründen kann dies auch die Leistung der Auswertung von Ausdrücken im Debugger beeinträchtigen.

JaredPar
quelle
38
Je mehr Benutzer es gibt, desto langsamer wird Intellisense sein
Riegardt Steyn
14

Nein, es ist nur eine Sache im Kompilierungs- / Codierungsstil. .NET-Binärdateien verwenden vollständig qualifizierte Namen unter der Haube.

ChrisV
quelle
3
Bedeutet dies, dass längere Klassen- und Methodennamen einen kleinen, aber tatsächlichen (wenn auch nicht messbaren) Einfluss auf die JIT-Kompilierungszeiten haben?
Jared Updike
8

Keine Auswirkung auf die Ausführungsgeschwindigkeit, aber möglicherweise geringfügige Auswirkungen auf die Kompilierungsgeschwindigkeit / Intellisense, da mehr potenzielle Namespaces für die Suche nach der richtigen Klasse vorhanden sind. Ich würde mir darüber keine Sorgen machen, aber Sie können den Menüpunkt Verwendungen organisieren verwenden, um die using-Anweisungen zu entfernen und zu sortieren.

Tvanfosson
quelle
8

Der folgende Link Eine gute Lektüre zum Entfernen nicht verwendeter Referenzen erklärt, wie nützlich es ist, nicht verwendete Referenzen aus der Anwendung zu entfernen.

Nachfolgend einige Auszüge aus dem Link:

  1. Indem Sie nicht verwendete Referenzen in Ihrer Anwendung entfernen, verhindern Sie, dass CLRdie nicht verwendeten referenzierten Module zur Laufzeit geladen werden. Dies bedeutet, dass Sie die Startzeit Ihrer Anwendung verkürzen, da das Laden jedes Moduls einige Zeit in Anspruch nimmt und vermieden wird, dass der Compiler Metadaten lädt, die niemals verwendet werden. Je nach Größe der einzelnen Bibliotheken wird Ihre Startzeit möglicherweise erheblich reduziert. Dies bedeutet nicht, dass Ihre Anwendung nach dem Laden schneller ist, aber es kann sehr praktisch sein zu wissen, dass sich Ihre Startzeit möglicherweise verkürzt.

  2. Ein weiterer Vorteil des Entfernens nicht verwendeter Referenzen besteht darin, dass Sie das Risiko von Konflikten mit Namespaces verringern. Wenn Sie beispielsweise beide haben System.Drawingund auf die System.Web.UI.WebControlsverwiesen wird, kann es zu Konflikten kommen, wenn Sie versuchen, auf die ImageKlasse zu verweisen . Wenn Sie in Ihrer Klasse Direktiven verwenden, die diesen Referenzen entsprechen, kann der Compiler nicht sagen, welche davon verwendet werden sollen. Wenn Sie bei der Entwicklung regelmäßig die automatische Vervollständigung verwenden, wird durch das Entfernen nicht verwendeter Namespaces die Anzahl der Werte für die automatische Vervollständigung in Ihrem Texteditor während der Eingabe verringert.

Deepak Tekchandani
quelle
5

Nein, beim Kompilieren eines Programms sind mehrere Prozesse erforderlich. Wenn der Compiler nach Referenzen (Klassen, Methoden) sucht, werden nur die im Code verwendeten verwendet. Die using-Direktive teilt dem Compiler nur mit, wo er suchen soll. Viele nicht verwendete using-Anweisungen können möglicherweise zu Leistungsproblemen führen, jedoch nur zur Kompilierungszeit. Zur Laufzeit ist der gesamte externe Code ordnungsgemäß verknüpft oder als Teil der Binärdatei enthalten.

Freddy
quelle
5

Code, der nicht ausgeführt wird, hat keinen Einfluss auf die Leistung eines Programms.

Jeff Leonard
quelle