Does.NET rozmiar montażu wpływa na wydajność?

Czy rozmiar zestawu. Net w ogóle wpływa na wydajność? A co z liczbą złożeń w projekcie windows forms/web forms?

Author: Anthony Mastrean, 2008-12-03

9 answers

Z wzorców i praktyk Microsoftu Poprawa wydajności i skalowalności aplikacji. Net Rozdział 5:

Preferuj Pojedyncze Duże Zespoły Zamiast Wielu Mniejsze Zespoły

Aby zmniejszyć zestaw roboczy aplikacji, powinieneś preferować pojedyncze większe zespołów zamiast wielu mniejszych zespołów. Jeśli masz kilka zespołów które są zawsze ładowane razem, należy je połączyć i utworzyć jeden montaż.

The napowietrzne związane z posiadaniem wielu mniejszych zespołów można przypisać do następującej:

  • koszt ładowania metadanych dla mniejszych zespołów.
  • dotykanie różnych stron pamięci w wstępnie skompilowanych obrazach w CLR w kolejności aby załadować zespół (jeśli jest wstępnie skompilowany z Ngen.exe).
  • JIT czas kompilacji.
  • kontrole bezpieczeństwa.

Ponieważ płacisz tylko za strony Pamięci, do których program ma dostęp, większe zespoły zapewniają Native Image Generator utility (Ngen.exe) z większym możliwość optymalizacji tworzonego przez siebie obrazu natywnego. Lepszy układ obrazu oznacza że niezbędne dane mogą być rozmieszczone bardziej gęsto, co z kolei oznacza mniej ogólnie strony są potrzebne do wykonania zadania w porównaniu do tego samego kodu ułożonego w wielu / align = "left" /

Czasami nie można uniknąć dzielenia zestawów; na przykład dla wersjonowania i przyczyny rozmieszczenia. Jeśli musisz wysyłać typy osobno, możesz potrzebować oddzielne / align = "left" /

 34
Author: Dan Blanchard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-17 08:15:04

Cóż, za każdym razem, gdy zostanie załadowany montaż, będzie jakiś hit ze względu na karę rozdzielczości - znalezienie odpowiedniego pliku, potencjalnie sprawdzenie numeru wersji itp. Jest to prawdopodobne przede wszystkim na początku działalności.

Jednak nie wierzę, że wpłynie to znacząco na wydajność w stanie stacjonarnym.

 10
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-03 13:50:40

Kompaktowa biblioteka DLL Framework będzie zawsze ładowana do minimum 64 kb pamięci, bez względu na to, jak mała jest. Tak więc załadowanie czterech oddzielnych bibliotek DLL CF 10 kb będzie kosztować 256 kb na urządzeniu. Jeśli połączysz je (ILMerge ), kosztowałoby to tylko 64 kb pamięci na urządzeniu.

 6
Author: Anthony Mastrean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-03 14:02:20

Nigdy nie spotkałem się ze znaczącym uderzeniem W wydajność, które wyśledziłem do rozmiaru lub liczby zespołów. Zdecydowana większość istotnych problemów z wydajnością, które wytropiłem, była wynikiem słabości algorytmicznych.

Jak mówi Jon Skeet, prawdopodobnie będzie mały hit ze względu na rozdzielczość przy starcie. lassevk ma również punkt dotyczący dynamicznej rozdzielczości zgromadzeń poprzez odbicie. Żadna z nich nie powinna wpływać na wydajność więcej niż jeden raz jednak przebieg programu i w normalnym toku rzeczy, które prawdopodobnie nie są znaczącym hitem wydajności, chyba że pracujesz pod pewnymi strasznie surowymi ograniczeniami.

Być może przydałby się jakiś dodatkowy kontekst problemu. Czy zadajesz to pytanie, ponieważ masz program z wieloma dużymi złożeniami i próbujesz go na przykład przyspieszyć?

 4
Author: Greg D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-03 13:55:52

Bardzo wątpię, aby wpływało to na wydajność w jakimkolwiek mierzalnym stopniu. Będzie jakaś kara za załadowanie go przy starcie; a zużycie pamięci prawdopodobnie zostanie zwiększone o jeden MB lub dwa, ale poza tym-nie. Chyba, że sam stworzysz kod, który cierpi z tego powodu.

To powiedziawszy, nie widziałem żadnych testów, więc mogę się mylić.

 1
Author: Vilx-,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-03 13:53:48

Jedna rzecz, którą wiem, wpłynie na wydajność, w odniesieniu do rozmiaru zestawu, przynajmniej jeśli rozmiar zestawu jest związany z liczbą klas, metod, itp.

Jeśli używasz reflection I używasz pętli podobnej do dla wszystkich zespołów, dla wszystkich typów w tych zespołach, sprawdź, czy mają atrybuty itp.. To może JIT statycznych konstruktorów i wywołać je w niektórych przypadkach.

Ah, widziałem odpowiedź Jona, zapomniałem wspomnieć. JIT ' ING kodu będzie się zdarzać tylko raz na kawałek kodu, oczywiście, więc jeśli wszystko, co robisz, to odbijasz nad typami i nigdy nie dotykasz ich po słowach, rozmiar złożenia wpłynie na czas trwania pętli odbicia, ale po tym nie powinno to mieć znaczenia.

 0
Author: Lasse Vågsæther Karlsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-03 14:05:00

Zgadzam się z odpowiedzią Dana i tylko dodać trochę więcej informacji: oto kolejny istotny wpis na blogu, który wspiera ten punkt widzenia: http://blogs.msdn.com/junfeng/archive/2004/02/23/78139.aspx

 0
Author: Brian Rasmussen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-10 06:37:33

Nie, Nie wpływa

 -2
Author: Samiksha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-03 13:55:27

Nieużywane zmienne lokalne i niepotrzebne przypisania zwiększają rozmiar złożenia i obniżają wydajność.

 -3
Author: ligaoren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-12 05:06:22