Odpowiedzi:
Użyłem JetBrains dotTrace i Redgate ANTS obszernie. Są dość podobne pod względem funkcji i ceny. Oba oferują przydatne profilowanie wydajności i dość podstawowe profilowanie pamięci.
dotTrace integruje się z Resharper, co jest naprawdę wygodne, ponieważ można profilować wydajność testu jednostkowego jednym kliknięciem z IDE. Jednak dotTrace często wydaje się dawać fałszywe wyniki (np. Mówiąc, że uruchomienie metody zajęło kilka lat)
Wolę sposób, w jaki ANTS prezentuje wyniki profilowania. Pokazuje kod źródłowy, a po lewej stronie każdego wiersza mówi, ile czasu zajęło jego uruchomienie. dotTrace ma tylko widok drzewa.
Profiler EQATEC jest dość prosty i wymaga kompilacji specjalnych oprzyrządowanych wersji twoich zestawów, które następnie można uruchomić w profilerze EQATEC. Jest jednak bezpłatny.
Ogólnie wolę ANTS do profilowania wydajności, chociaż jeśli używasz Resharpera, to integracja dotTrace jest zabójczą funkcją i oznacza, że bije ANTS pod względem użyteczności.
Darmowy profilator Microsoft CLR ( .Net Framework 2.0 / .Net Framework 4.0 ) to wszystko, czego potrzebujesz do profilowania pamięci .NET.
Aktualizacja 2011:
Program profilujący pamięć Scitech ma dość podstawowy interfejs użytkownika, ale wiele przydatnych informacji, w tym pewne informacje o niezarządzanej pamięci, których brakuje w dotTrace i ANTS - może się przydać, jeśli wykonujesz interakcja COM, ale jeszcze nie znalazłem żadnego profilera, który sprawia, że COM problemy z pamięcią łatwe do zdiagnozowania - zwykle trzeba się wyrwać windbg.exe
.
Profil ANTS pojawił się w ostatnich latach w zawrotnym tempie, a jego profil pamięci ma kilka naprawdę użytecznych funkcji, które teraz pchnęły mnie przed dotTrace jako pakiet w mojej ocenie. Mam szczęście, że mam licencje na oba, ale jeśli zamierzasz kupić jeden profil .Net zarówno pod względem wydajności, jak i pamięci, uczyń go ANTS.
Inne dotyczyły profilowania wydajności, ale jeśli chodzi o profilowanie pamięci , obecnie oceniam zarówno Scitech .NET Memory Profiler 3.1, jak i ANTS Memory Profiler 5.1 (aktualne wersje z września 2009 r.). Próbowałem JetBrains rok lub dwa lata temu i nie było tak dobre jak ANTS (do profilowania pamięci), więc tym razem nie zawracałem sobie głowy. Po przeczytaniu stron internetowych wygląda na to, że nie ma takich samych funkcji profilowania pamięci jak pozostałe dwa.
Zarówno ANTS, jak i profiler pamięci Scitech mają funkcje, których drugi nie ma, więc to, co najlepsze, będzie zależeć od twoich preferencji. Ogólnie rzecz biorąc, Scitech dostarcza bardziej szczegółowych informacji, podczas gdy ANTS jest naprawdę niesamowity w identyfikowaniu przeciekającego obiektu. Ogólnie rzecz biorąc, wolę ten ANTS, ponieważ jest on tak szybki w wykrywaniu możliwych wycieków.
Oto główne zalety i wady każdego z mojego doświadczenia:
Wspólne funkcje ANTS i Scitech .NET Memory Profiler
Mrówki
Scitech .NET Memory Profiler
Podsumowując, myślę, że ANTS pomaga szybciej znaleźć wyciek, podczas gdy Scitech zapewnia nieco więcej szczegółów na temat ogólnej wydajności pamięci aplikacji i poszczególnych obiektów, kiedy już wiesz, na co patrzeć (np. Śledzenie stosu podczas tworzenia). Gdyby śledzenie stosu i śledzenie niewydanych obiektów jednorazowych zostało dodane do ANTS, nie widziałbym potrzeby używania czegokolwiek innego.
Niedawno odkryłem EQATEC Profiler http://www.eqatec.com/tools/profiler . Działa z większością wersji .NET i na wielu platformach. Jest łatwy w użyciu, a jego części są bezpłatne, nawet do użytku komercyjnego.
[ Pełne ujawnienie ]
Chociaż nie jest tak w pełni funkcjonalny, jak niektóre inne wymienione tutaj profile profilujące pamięć .NET, na rynku pojawiła się nowa pozycja o nazwie JustTrace . Został stworzony przez Telerik, a jego głównym celem jest ułatwienie i szybsze śledzenie / profilowanie dla wszystkich typów aplikacji (web / Silverlight / desktop).
Jeśli kiedykolwiek zauważyłeś, że profilowanie i optymalizacja są zastraszające lub powolne w przypadku innych narzędzi, JustTrace może być wart spojrzenia.
Nie zapomnij nProf - doskonale dobrego, darmowego profilera.
Przekonałem się, że dotTrace Profiler firmy JetBrains jest doskonałym narzędziem do profilowania dla .NET, a ich tryb ASP.NET to jakość.
ANTS Profiler . Nie korzystałem z wielu, ale tak naprawdę nie mam żadnych skarg na ANTS. Wizualizacja jest naprawdę pomocna.
AutomatedQA AQTime dla pomiaru czasu i SciTech MemProfiler dla pamięci.
Jeśli szukasz czegoś szybkiego, łatwego i bezpłatnego, http://code.google.com/p/slimtune/ wydaje się dobrze.
Pracuję z JetBrains dotTrace dla WinForm i aplikacji konsolowych (jeszcze nie testowane na ASP.net) i działa całkiem dobrze:
Ostatnio dodali także „Licencję osobistą”, która jest znacznie tańsza niż licencja korporacyjna. Jeśli jednak ktoś zna jakieś tańsze lub nawet darmowe, też chciałbym usłyszeć :-)
Nie zapomnij o niesamowitym profilerze pamięci scitech .net
Jest świetny do śledzenia, dlaczego w Twojej aplikacji .net kończy się pamięć.
Dodałbym, że zdolność dotTrace do różnicowania pamięci i sesji śledzenia wydajności jest absolutnie nieoceniona (ANTS może również mieć funkcję różnicowania pamięci, ale nie widziałem różnicy wydajności).
Będąc w stanie przeprowadzić sesję profilowania przed naprawą lub ulepszeniem błędu, a następnie porównać wyniki, jest niezwykle cenny, szczególnie w przypadku gigantycznej starszej aplikacji .NET (jak w moim przypadku), w której wydajność nigdy nie była priorytetem i gdzie znalezienie wąskich gardeł może być BARDZO nudne. Wykonanie porównania przed i po pozwala zobaczyć zmianę liczby połączeń dla każdej metody i zmianę czasu trwania każdej metody .
Jest to pomocne nie tylko podczas zmian kodu, ale także w przypadku aplikacji korzystającej z innej bazy danych, powiedzmy, dla każdego klienta / klienta. Jeśli jeden klient skarży się na powolność, możesz uruchomić sesję profilowania przy użyciu jego bazy danych i porównać wyniki z „szybką” bazą danych, aby określić, które operacje przyczyniają się do spowolnienia. Oczywiście istnieje wiele narzędzi wydajności po stronie bazy danych, ale czasami naprawdę pomagam zobaczyć wskaźniki wydajności od strony aplikacji (ponieważ jest to bliższe temu, co faktycznie widzi użytkownik).
Podsumowując: dotTrace działa świetnie, a diff jest nieoceniony.
AQTime jest rozsądny, ale ma trochę krzywej uczenia się i nie jest tak łatwy w użyciu, jak wbudowany w Team Suite
W przeszłości korzystałem z profilera dostarczanego z Visual Studio Team System .
Obecna wersja SharpDevelop (3.1.1) ma ładny zintegrowany profiler. Jest dość szybki i bardzo dobrze integruje się z SharpDevelop IDE i jego programem uruchamiającym NUnit. Wyniki są wyświetlane w elastycznym stylu drzewa / listy (użyj LINQ, aby utworzyć własny wybór). Podwójne kliknięcie wyświetlonej metody powoduje bezpośrednie przejście do kodu źródłowego.
Wątpię, aby profiler dostarczany z Visual Studio Team System był najlepszym profilerem, ale wielokrotnie stwierdziłem, że jest wystarczająco dobry. Czego konkretnie potrzebujesz poza tym, co oferuje VS?
EDYCJA: Niestety jest dostępna tylko w VS Team System, ale jeśli masz do niej dostęp, warto to sprawdzić.
Analizator wydajności Intel® VTune ™ do szybkiego próbkowania
Muszę zwrócić uwagę na niesamowite narzędzie, z którego kiedyś korzystałem. AVICode Interceptor Studio . W mojej poprzedniej firmie korzystaliśmy z tego wspaniałego narzędzia do profilowania aplikacji internetowej ( ma to być największa pojedyncza aplikacja internetowa na świecie i największy cywilny projekt informatyczny, jaki kiedykolwiek zrealizowano ). Zespół ds. Wydajności dokonał cudów za pomocą tego wspaniałego narzędzia. Konfiguracja jest trudna, ale jest to jednorazowa czynność i powiedziałbym, że warto. Sprawdź tę stronę, aby uzyskać szczegółowe informacje.
Dzięki, James
Dla mnie SpeedTrace jest najlepszym narzędziem na rynku, ponieważ pomaga nie tylko znaleźć wąskie gardła w aplikacjach. Pomaga również w scenariuszach rozwiązywania problemów, aby dowiedzieć się, dlaczego aplikacja uległa awarii, instalacja nie została zainstalowana, aplikacja się zawiesiła, wydajność aplikacji jest czasami niska w zależności od danych wejściowych, np. W celu identyfikacji wolnych transakcji db.
Niedawno testowałem JustTrace firmy Telerik i chociaż jest on daleki od gotowego produktu, faceci idą w dobrym kierunku.
Profiler NuMega True Time żyje w DevPartner Studio firmy Micro Focus. Zapewnia szczegółowe informacje o poziomie linii i metody dla aplikacji .NET wymagających tylko PDB, nie wymaga źródła (ale pomaga). Może rozróżniać algorytmicznie trudne procedury w porównaniu z tymi z długimi operacjami we / wy, używając naszego zastrzeżonego sterownika synchronizacji trybu jądra na wątek. Wersja 10.5 jest dostarczana z nową obsługą 64 procesów w dniu 4 lutego 2011 r. Bezwstydna wtyczka: Pracuję na linii produktów DevPartner. Kontynuuj na stronie http://www.DevPartner.com, aby uzyskać informacje o uruchomieniu wersji 10.5.
Oświadczenie: Jestem menedżerem produktu w DevPartner w Micro Focus.
Za pomocą tego znalazłem wiele problemów w dużej aplikacji w języku C # .
Zwykle problem pojawia się podczas uruchamiania lub zamykania, gdy ładowane są wtyczki, a struktury dużych danych są tworzone, niszczone, serializowane lub deserializowane. Często są one tworzone i inicjowane więcej niż jeden raz, a procedury obsługi zmian są dodawane wiele razy, dodatkowo komplikując problem.
W takich przypadkach program może być tak powolny, że tylko 2 próbki są wystarczające, aby wskazać winne metody wywoływania metod / funkcji / właściwości.
W mojej firmie wybraliśmy YourKit Profiler dla platformy .NET, ponieważ była to najlepsza wartość (cena w porównaniu do funkcji). Dla małej firmy, która chce mieć elastyczne licencje (licencje zmienne), był to idealny wybór - ANTS był wówczas medalionem dla deweloperów.
Dało nam to także możliwość dołączenia do uruchomionego procesu, co nie było możliwe w przypadku dotTrace. Uważaj jednak, że dołączanie nie jest najlepszą opcją, ponieważ wszystko .NET spowolni, ale był to jedyny sposób na profilowanie aplikacji .NET uruchomionych przez inne procesy. Jeśli chodzi o cechy, ANTS i dotTrace były lepsze - ale ostatecznie YourKit był wystarczająco dobry.