2009-06-25 8 views
6

Pracuję nad aplikacją WinForm, która ma około 5 odwołanych zestawów - napisanych przez nas, oraz około 8 referencyjnych zestawów przez strony trzecie (nie będziemy mieć nadziei na ich aktualizację w przyszłości, chyba że coś się stanie strasznie źle - komponenty Infragistics/DevExpress!).Najlepsze praktyki w Geniut i NGC

Nasze czasy uruchamiania są trochę za wysokie na zimne buty, zastanawiam się tylko, czy dodawanie ich do Gac i ngenowanie ich jest drogą do zrobienia.

Kiedy instalujemy pamięć podręczną NGen, czy musi ona być również w gac? Co łączy te dwa? Do czego powinienem dążyć? Mamy jednego exe, zrobię ILMerge, ale nie jestem pewien, czy zadziała w naszym scenariuszu - długiej historii.

Ponadto, jest to możliwe, aby uzyskać jak dużo pamięci mój exe sobą - podobnie jak aplikacje Java zrobić

+1

Być może zechcesz zafascynować profilera, aby zobaczyć, co powoduje spowolnienie. ANTS (od RedGate) jest dobry. – Pondidum

Odpowiedz

0

Brzmi mi się, że twoja definicja problemu jakoś sugerując swoje rozwiązanie ☺

(jak Netbeans!)

Innymi słowy, skąd wiadomo, że czas rozruchu pochodzi z ładowania złożeń?

To, co powinieneś zrobić, to profilować aplikację i upewnić się, że tak właśnie jest. Jest to możliwe, ale co jeśli trwa inicjalizacja i koncentrujesz się na zbyt dużej optymalizacji niewłaściwego miejsca?

Here Istnieje kilka narzędzi, które powinny pomóc w profilowaniu niezarządzanych aplikacji.

Ponieważ mówisz o aplikacjach WinForm, zakładam, że masz Visual Studio. Jeśli tak, możesz użyć aplikacji zarządzanej pod numerem its profiler.

Powodzenia!

0

Jeśli nie korzystasz z wersji 3.5 SP1 środowiska .net, powinieneś rozważyć test porównawczy na tej platformie, aby sprawdzić, czy dostrzegasz różnicę. Odnotowano ulepszenia, które mogą skrócić czas aplikacji Uruchomienie: CLR Optimizations In .NET Framework 3.5 SP1

This article ma także kilka dobrych ogólnych wytycznych, NGEN najlepszych praktyk i sztuczki z unikając podścielanie swoich zespołów (choć na 5 lub tak odwołuje zespołów z pracujesz z, nie oczekuj cudów).

Jednak najprawdopodobniej uzyskasz najbardziej znaczącą redukcję czasu uruchamiania, szukając wąskich gardeł w swojej aplikacji, w przeciwieństwie do znalezienia szybkiej poprawki w innym miejscu.

4

Głównym celem poprawy czasu uruchamiania jest użycie opóźnionej inicjalizacji, gdy tylko jest to możliwe. Nie tworzyj niepotrzebnych rzeczy natychmiast po uruchomieniu. Użyj wzoru: lazy init. Możliwe jest również uruchomienie procesu roboczego inicjowania w tle po głównym formularzu programu show w celu przeprowadzenia inicjalizacji niekrytycznej. Itp., Itp., Itp.

Możesz również sprawdzić następujące informacje: article (Improving Application Startup Time).

+1

+1 dla artykułu CLR Inside Out na temat poprawy czasu uruchamiania aplikacji. Bardzo pomocne. (Powinieneś jednak podać tytuł artykułu w swoim hiperłączu - prawie go nie kliknąłem). – dthrasher