Jakie Są Niektóre Good.NET Profilerzy?

Jakich profili używaliście podczas pracy z programami. NET i które szczególnie polecacie?

Author: ricree, 2008-08-07

30 answers

Używałem JetBrains dotTrace i Redgate ANTS intensywnie. Są dość podobne pod względem funkcji i ceny. Oba oferują przydatne profilowanie wydajności i całkiem podstawowe profilowanie pamięci.

DotTrace integruje się z Resharper, co jest naprawdę wygodne, ponieważ można profilować wydajność testu jednostkowego za pomocą jednego kliknięcia 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 mrówki prezentują wyniki profilowania. Pokazuje kod źródłowy i po lewej stronie każdej linii mówi, jak długo trwało uruchamianie. dotTrace ma tylko Widok na drzewo.

EQATEC profiler jest dość prosty i wymaga kompilacji specjalnych oprzyrządowanych wersji zespołów, które można następnie uruchomić w eqatec profiler. Jest jednak wolny.

Ogólnie wolę mrówki do profilowania wydajności, chociaż jeśli używasz Resharper to integracja dotTrace jest zabójcza funkcja i oznacza, że bije mrówki w użyteczności.

Darmowy Profiler Microsoft CLR (. Net framework 2.0 / . Net Framework 4.0) to wszystko, czego potrzebujesz do profilowania pamięci. NET.

2011 Update:

Scitech memory profiler ma dość podstawowy interfejs użytkownika, ale wiele przydatnych informacji, w tym kilka informacji na temat niezarządzanej pamięci, których brakuje dotTrace i ANTS - może się to przydać, jeśli robisz COM interop, ale ja jeszcze nie mam znajdź dowolnego profilera, który ułatwi diagnozowanie problemów z pamięcią COM-zazwyczaj musisz usunąć windbg.exe.

The ANTS profiler pojawił się skokowo w ciągu ostatnich kilku lat, a jego memory profiler ma kilka naprawdę przydatnych funkcji, które teraz pchnęły go przed dotTrace jako pakiet w mojej ocenie. Mam szczęście, że mam licencje na oba, ale jeśli zamierzasz kupić jeden. Net profiler zarówno dla wydajności, jak i pamięci, zrób to.

 285
Author: Matt Howells,
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
2012-01-04 09:27:44

Inni zajmowali się profilowaniem wydajności, ale w odniesieniu do profilowania pamięci Obecnie oceniam zarówno Scitech. NET Memory Profiler 3.1 jak i ANTS Memory Profiler 5.1(aktualne wersje na Wrzesień 2009). Próbowałem JetBrains jeden rok lub dwa temu i nie był tak dobry jak mrówki (do profilowania pamięci), więc nie zawracałem sobie tym razem głowy. Czytając strony internetowe wygląda na to, że nie ma tych samych funkcji profilowania pamięci jak inne dwa.

Zarówno ANTS, jak i Scitech memory profiler mają funkcje, których inne nie mają, więc to, co jest najlepsze, zależy od Twoich preferencji. Ogólnie Rzecz Biorąc, Scitech one dostarcza bardziej szczegółowych informacji, podczas gdy mrówki one są naprawdę niesamowite w identyfikacji przeciekającego obiektu. Ogólnie rzecz biorąc, wolę mrówki, ponieważ tak szybko identyfikuje możliwe wycieki.

Oto główne plusy i minusy każdego z moich doświadczeń:

Wspólne cechy mrówek i Scitech. NET Memory Profiler

  • funkcja analizy w czasie rzeczywistym
  • doskonałe filmy instruktażowe na swoich stronach internetowych
  • łatwy w użyciu
  • W miarę wydajny (oczywiście wolniejszy niż bez dołączonego profilera, ale nie tak bardzo się frustrujesz)
  • Pokaż przypadki wyciekających obiektów
  • W zasadzie obie wykonują tę pracę całkiem dobrze

Mrówki

  • filtry jednym kliknięciem, aby znaleźć typowe wycieki w tym: obiekty utrzymywane przy życiu tylko przez procedury obsługi zdarzeń, obiekty, które są usuwane, ale nadal żywe oraz obiekty, które są utrzymywane przy życiu tylko przez odniesienie z usuwanego obiektu. Jest to prawdopodobnie zabójcza cecha mrówek - znalezienie przecieków jest niewiarygodnie szybkie z tego powodu. Z mojego doświadczenia wynika, że większość wycieków jest spowodowana nie odczepianiem obsługi zdarzeń, a mrówki po prostu przenoszą cię prosto do tych obiektów. Super.
  • Wykres retencji obiektów. Podczas gdy te same informacje są dostępne w Scitech, dużo łatwiej to zinterpretować u mrówek.
  • pokazuje rozmiar z dziećmi oprócz rozmiaru samego obiektu (ale tylko wtedy, gdy wybrana jest instancja, niestety, nie w ogólnej liście klas).
  • [15]}Lepsza integracja z Visual Studio (kliknij prawym przyciskiem myszy na wykresie, aby przejść do pliku)

Scitech. NET Memory Profiler

  • pokazuje ślad stosu, kiedy obiekt został przydzielony. To jest Naprawdę przydatne dla obiektów, które są przydzielane w wielu w różnych miejscach. W przypadku mrówek trudno jest dokładnie określić, gdzie powstał wyciekający obiekt.
  • pokazuje liczbę przedmiotów jednorazowego użytku, które nie zostały usunięte. Chociaż nie wskazuje na wyciek, identyfikuje możliwości rozwiązania tego problemu i poprawy wydajności aplikacji w wyniku szybszego usuwania śmieci.
  • bardziej szczegółowe opcje filtrowania(kilka kolumn może być filtrowanych niezależnie).
  • prezentuje informacje o wszystkich utworzonych obiektach (w tym tych zbierane śmieci). ANTS pokazuje tylko "żywe" statystyki obiektów. Ułatwia to analizę i dostosowanie ogólnej wydajności aplikacji (np. określ, gdzie niepotrzebnie powstaje wiele obiektów, które niekoniecznie przeciekają).

Podsumowując, myślę, że ANTS pomaga szybciej znaleźć to, co przecieka, podczas gdy Scitech zapewnia nieco więcej szczegółów na temat ogólnej wydajności pamięci aplikacji i poszczególnych obiektów, gdy już wiesz, na co patrzeć (np. stack trace przy tworzeniu). Jeśli stack trace i śledzenie niedysponowanych przedmiotów jednorazowego użytku został dodany do mrówek nie widzę potrzeby korzystania z niczego innego.

 88
Author: Ben Robbins,
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-09-25 03:16:32

Niedawno odkryłem Eqatec Profiler http://www.eqatec.com/tools/profiler. działa z większością wersji. NET i na kilku platformach. Jest łatwy w użyciu, a jego części są bezpłatne, nawet do użytku komercyjnego.

 45
Author: TrolleFar,
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-22 09:31:37

[Pełne Ujawnienie]

Choć nie jest jeszcze tak w pełni funkcjonalny, jak niektóre z innych profilerów pamięci. NET wymienionych tutaj, pojawił się nowy wpis na rynku o nazwie JustTrace. Jest stworzony przez Telerik i jego głównym celem jest ułatwienie śledzenia / profilowania dla wszystkich typów aplikacji (web/Silverlight/desktop).

Jeśli kiedykolwiek uznałeś profilowanie i optymalizację za onieśmielające lub powolne za pomocą innych narzędzi, to JustTrace może być warte spójrz.

 31
Author: Todd,
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
2017-05-23 12:02:27

Don ' t forget nProf - Bardzo dobry, darmowy profiler.

 25
Author: Greg Hurlman,
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-07-23 14:40:59

Znalazłem dotTrace Profiler by JetBrains jako doskonałe narzędzie do profilowania dla. NET i ich ASP.NET tryb to jakość.

 14
Author: Chris Ballance,
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-03-04 22:23:30

ANTS Profiler . Nie używałem wielu, ale nie mam żadnych skarg na mrówki. Wizualizacja jest naprawdę pomocna.

 12
Author: palmsey,
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-08-06 20:19:00

AutomatedQA AQtime dla timing i SciTech MemProfiler dla pamięci.

 11
Author: Lars Truijens,
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-08-29 09:49:56

Jeśli szukasz czegoś szybkiego, łatwego i darmowego, http://code.google.com/p/slimtune wygląda na to, że dobrze to robi.

 11
Author: Taudris,
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-12-29 20:04:40

Pracowałem z JetBrains dotTrace dla WinForms i aplikacji konsolowych (nie testowane na ASP.net jeszcze), i działa całkiem dobrze:

Ostatnio dodali również "licencję osobistą", która jest znacznie tańsza niż korporacyjna. Jeśli ktoś jeszcze zna jakieś tańsze lub nawet DARMOWE, to chętnie posłucham: -)

 9
Author: Michael Stum,
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
2011-11-28 13:41:47

Nie zapomnij o niesamowitym scitech . NET memory profiler

Jest świetny do śledzenia, dlaczego w aplikacji. Net kończy się pamięć.

 7
Author: Sam Saffron,
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-10-15 22:25:20

Dodam, że zdolność dotTrace do sesji diff memory i performance trace {[2] } jest absolutnie nieoceniona(mrówki mogą mieć również funkcję diff memory, ale nie widziałem różnicy wydajności).

Możliwość uruchomienia sesji profilowania przed i po poprawce lub ulepszeniu błędu, a następnie porównanie wyników jest niezwykle cenne, szczególnie w przypadku mamutowej 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 cenne nudne. Dokonywanie rozróżnienia przed i po pozwala zobaczyć zmianę liczby wywołań dla każdej metody oraz zmianę czasu trwania dla każdej metody.

Jest to pomocne nie tylko podczas zmiany kodu, ale także jeśli masz aplikację, która używa innej bazy danych, powiedzmy, dla każdego klienta / klienta. Jeśli klient narzeka na powolność, można uruchomić sesję profilowania za pomocą jego bazy danych i porównać wyniki z "szybką" bazą danych, aby określić, które operacje są przyczyniając się do powolności. Oczywiście istnieje wiele narzędzi wydajności po stronie bazy danych, ale czasami naprawdę pomaga zobaczyć metryki wydajności od strony aplikacji (ponieważ jest to bliższe temu, co faktycznie widzi użytkownik).

Podsumowując: dotTrace działa świetnie, a różnica jest nieoceniona.

 5
Author: shaunmartin,
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-04-07 23:29:35

AQTime jest rozsądny, ale ma trochę krzywej uczenia się i nie jest tak łatwy w użyciu, jak wbudowany jeden w Team Suite

 4
Author: Jeff Moser,
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-03-04 22:19:44

W przeszłości używałem profilera, który wysyła z Visual Studio Team System.

 3
Author: Ant,
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-08-31 05:12:31

Obecne wydanie SharpDevelop (3.1.1) ma ładny zintegrowany profiler. Jest dość szybki i bardzo dobrze integruje się z SharpDevelop IDE i jego NUnit runner. Wyniki są wyświetlane w elastycznym stylu drzewa / listy (użyj LINQ, aby utworzyć własny wybór). Dwukrotne zaznaczenie wyświetlanej metody przeskakuje bezpośrednio do kodu źródłowego.

 3
Author: David Schmitt,
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-06-21 11:10:50

Pracowałem z profilerem RedGate ' a w przeszłości. Zrobił to za mnie.

 2
Author: Kev,
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-08-06 20:17:06

Nie próbowałem sam, ale może dotTrace ? Ich aplikacja ReSharper jest z pewnością dobra. Może dotTrace też jest:)

 2
Author: Svish,
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-03-04 22:19:50

Wątpię, aby profiler, który jest dostarczany z systemem Visual Studio Team, był najlepszym profilerem, ale wiele razy uznałem go za wystarczająco dobry. Czego konkretnie potrzebujesz poza tym, co oferuje VS?

EDIT: niestety jest on dostępny tylko w systemie VS Team, ale jeśli masz do niego dostęp, warto to sprawdzić.

 2
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-03-04 22:30:36

Najnowsza wersja Ants memory profiler (chyba 5) po prostu rządzi!!! Nawiedzałem przeciek za pomocą WinDbg i SOS, ponieważ okazało się to najlepszym sposobem wcześniej, potem próbowałem mrówek i dostałem go w kilka minut. Naprawdę wspaniały kawałek oprogramowania.

 2
Author: pablo,
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-07-07 22:07:10

Chciałbym dodać yourkit java i. Net profiler, uwielbiam go dla Javy, nie próbowałem wersji. NET choć.

 2
Author: Redlab,
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-06-15 09:56:31

Niestety większość profilerów, których próbowałem nie powiodła się, gdy używałem z ogonami, zwłaszcza mrówek. Po prostu piszę własne. W CodeProject istnieje prosta implementacja, której możesz użyć jako bazy.

 1
Author: leppie,
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-09-19 08:38:59

Intel® VTune ™ Performance Analyzer do szybkiego pobierania próbek

 1
Author: utility73,
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-09-19 08:48:46

Muszę przynieść Ci niesamowite narzędzie, z którego kiedyś korzystałem. AVICode Interceptor Studio . W mojej poprzedniej firmie użyliśmy tego wspaniałego narzędzia do profilowania webaplikacji ( to ma być największa aplikacja internetowa na świecie i największy cywilny Projekt IT kiedykolwiek wykonany ). Zespół performerów dokonał cudów za pomocą tego wspaniałego narzędzia. Trudno to skonfigurować, ale jest to czynność jednorazowa i powiedziałbym, że warto czas. Checkout ta strona aby uzyskać szczegóły.

Dzięki, James

 1
Author: James Poulose,
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-16 21:07:33

Dla mnie SpeedTrace jest najlepszym narzędziem na rynku, ponieważ nie tylko pomaga znaleźć wąskie gardła wewnątrz aplikacji. Pomaga również w rozwiązywaniu problemów, aby dowiedzieć się, dlaczego aplikacja się zawiesza, konfiguracja nie została zainstalowana, aplikacja się zawiesiła, wydajność aplikacji jest czasami słaba w zależności od wprowadzanych danych, np. w celu identyfikacji wolnych transakcji db.

 1
Author: Dirk,
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-08-07 11:31:45

[[0]] Ostatnio testowałem Telerika JustTrace i chociaż jest daleko od gotowego produktu, chłopaki idą w dobrym kierunku.

 1
Author: Ivan Petrov,
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
2011-09-02 13:05:29

Jeśli licencjonowanie jest problemem, możesz spróbować WINDBG do profilowania pamięci

 1
Author: Vibes,
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
2012-02-02 17:55:45

NuMega True Time profiler mieszka w DevPartner Studio By Micro Focus. Zapewnia szczegóły linii i poziomu metod dla aplikacji. NET wymagających tylko PDB, bez źródła potrzebne (ale to pomaga.) Może odróżniać algorytmicznie ciężkie procedury od tych z długim oczekiwaniem we / wy przy użyciu naszego zastrzeżonego sterownika czasowego trybu jądra per thread. Wersja 10.5 jest dostarczana z nowym 64-procesowym wsparciem 4 lutego 2011. Shameless plug: pracuję na linii produktów DevPartner. Kontynuacja na http://www.DevPartner.com dla wiadomości o premierze 10.5.

Zastrzeżenie: jestem Product Managerem DevPartner W Micro Focus.

 1
Author: Matt Schuetze,
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
2012-02-13 16:23:14

Znalazłem wiele problemów w dużej aplikacji C# używając tego .

Zazwyczaj problem pojawia się podczas uruchamiania lub zamykania, gdy wtyczki są ładowane, a duże struktury danych są tworzone, niszczone, serializowane lub deserializowane. Często są one tworzone i inicjowane więcej niż raz, a procedury obsługi zmian są dodawane wiele razy, co dodatkowo komplikuje problem.

W takich przypadkach program może być tak powolny, że wystarczy tylko 2 próbki, aby wskazać guilty method / function / property Call sites.

 0
Author: Mike Dunlavey,
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
2017-05-23 11:47:01

Wybraliśmy YourKit Profiler dla. Net w mojej firmie, ponieważ był to najlepszy stosunek ceny do funkcji. Dla małej firmy, która chce mieć elastyczne licencje (licencje pływające) był to doskonały wybór - ANTS był w tym czasie deweloperem seat locket.

Dało nam również możliwość dołączenia do uruchomionego procesu, co nie było możliwe dzięki dotTrace. Uważaj jednak, że dołączanie nie jest najlepszą opcją, ponieważ wszystko. NET spowolni, ale to był jedyny sposób na profilowanie Aplikacje. NET uruchomione przez inne procesy. Funkcja mądra, mrówki i dotTrace były lepsze - ale w końcu YourKit był wystarczająco dobry.

 0
Author: Slobodan Savkovic,
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
2012-01-09 16:12:17

Jeśli jesteś na ASP.NET MVC, możesz spróbować MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)

 0
Author: eka808,
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
2012-03-13 14:41:04