Tut .NET-assembly-Größe auf die Leistung auswirken?
Ist die Größe des ein .net-assembly Auswirkungen auf die Leistung überhaupt? Wie über die Anzahl der Baugruppen, die in Ihrem windows-forms/web-forms-Projekt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Von der Microsoft Patterns & Methoden Die Verbesserung .NET Application Performance and Scalability Kapitel 5:
Lieber Einzelne Große Versammlungen Statt Mehrere
Kleinere Baugruppen
Zur Reduzierung Ihrer Anwendung arbeiten legen, sollten Sie lieber größere
Baugruppen, anstatt mehrere kleinere Baugruppen. Wenn Sie mehrere Baugruppen
das sind immer geladen zusammen, kombinieren Sie Sie und erstellen Sie eine einzelne
Montage.
Den Aufwand mit mehreren kleineren Baugruppen zugeordnet werden können
um die folgenden:
um die assembly zu laden (wenn es vorkompilierte mit Ngen.exe).
Da zahlt man nur für den Speicher-Seiten, die dein Programm zugreift, größere
Assemblys stellen die Native Image Generator-Dienstprogramm (Ngen.exe) mit einem größeren
chance zur Optimierung der native image produziert. Besseres layout des Bildes bedeutet
die erforderlichen Daten können verlegt werden mehr dicht, was wiederum bedeutet, dass weniger insgesamt
Seiten erforderlich sind, um die Arbeit zu tun im Vergleich zu den gleichen code festgelegt, die in mehreren
Baugruppen.
Manchmal kann man nicht vermeiden Aufspaltung Baugruppen; zum Beispiel für die Versionierung und
Bereitstellung Gründe. Wenn Sie brauchen, um Schiff-Typen getrennt, müssen Sie möglicherweise separate
Baugruppen.
Gut, jedes mal, wenn ein assembly geladen wird, wird es einige Treffer aufgrund der Auflösung Strafe - das finden der richtigen Datei, potenziell überprüfen der Versionsnummer usw. Dies ist wahrscheinlich in Erster Linie an start-up.
Allerdings glaube ich nicht, es wird sich auf "steady-state" - performance erheblich.
Einen compact framework-DLL wird immer geladen werden, in ein 64 kb minimum Speicherplatz, egal wie klein es ist. So laden vier separate 10-kb-CF-DLLs kostet 256 kb auf dem Gerät. Wenn man Sie kombiniert ( ILMerge ), wäre es kostet Sie nur 64 kb Speicher auf dem Gerät.
Ich habe noch nie traf eine signifikante Treffer, um die Leistung, die ich aufgespürt, um entweder die Größe oder die Anzahl der Baugruppen. Die überwiegende Mehrheit der erhebliche performance-Probleme habe ich aufgespürt wurde das Ergebnis der algorithmischen Schwächen.
Als Jon Skeet sagt, es werden wahrscheinlich einige kleine Treffer aufgrund der Auflösung beim Start. lassevk hat auch einen Punkt bei der dynamischen Auflösung von assemblies per reflection. Weder einer von diesen sollte sich auf die Leistung auswirken, mehr als einmal im Laufe des Programms, aber, und im normalen Verlauf der Dinge, dass wahrscheinlich nicht eine deutliche performance-Treffer, es sei denn, Sie arbeiten unter bestimmten schrecklich strengen perf Einschränkungen.
Vielleicht einige zusätzliche Kontext für das problem wäre hilfreich. Fragen Sie diese Frage, denn Sie haben ein Stück software mit einer Menge von großen Baugruppen und versuchen, es zu beschleunigen, zum Beispiel?
Bezweifle ich stark es wirkt sich auf die Leistung zu jedem messbaren Grad. Es wird einige Strafe für das laden beim Start; und die Speicherauslastung wird wahrscheinlich erhöht werden, indem ein MB oder zwei, aber anders als das - keine. Gut, es sei denn, Sie code, der leidet, weil diese selbst.
Sagte, ich habe nicht gesehen, alle tests, so dass ich könnte falsch sein.
Eine Sache, die ich kenne, die die Leistung beeinflussen, in Bezug auf Montage-Größe, zumindest wenn die Montage Größe bezieht sich auf die Zahl der Klassen, Methoden, etc.
Wenn Sie mit Reflexion und eine Schleife verwenden, wie für alle Baugruppen, die für alle Arten in diesen Baugruppen, prüfen, ob diese Attribute, etc.. Dies könnte JIT-statische Konstruktoren und rufen Sie diese in einigen Fällen.
Ah, sah Jon ' s Antwort, habe vergessen zu erwähnen. JIT ' Ing der code wird nur einmal pro Stück code, das natürlich, also, wenn alle Sie tun, ist nachzudenken über die Arten, und berühren Sie anschließend die Größe der Versammlung auf die Dauer, die Reflexion Schleife, aber danach sollte es keine Rolle, auf allen.
Ich Stimme mit Dan ' s Antwort und um ein bisschen mehr info: hier ist eine weitere relevante blog-post zur Unterstützung der point-of-view: http://blogs.msdn.com/junfeng/archive/2004/02/23/78139.aspx
Nein , es hat keinen Einfluss auf
Ungenutzte lokale Variablen und unnötige Zuweisungen erhöhen Sie die Größe der Baugruppe und die Leistung beeinträchtigen.