5

Mam przestrzeń roboczą Visual Studio 2005 Solution, która z kolei obejmuje 8 projektów. Chcę profilować kompletny kod (wszystkie projekty) i uzyskać pewną miarę bezwzględnych cykli wykonanych przez każdą funkcję do wykonania lub co najmniej procentowego zużycia cykli.Profilowanie kodu w Visual Studio 2005

Sprawdziłem pomoc dla VS 2005, a także opcje ustawień projektu, ale nie mogłem znaleźć żadnych wskazówek na hwo, aby uzyskać informacje o profilu. Każda pomoc w tej sprawie byłaby korzystna.

-AD.

+0

profilowanie lub profilowanie kodu? Właśnie retagowałem kilka pytań z profilowania kodu do profilowania, ponieważ profilowanie było częstszym tagiem ... –

Odpowiedz

2

Domyślam się, że wbudowany profiler programu Visual Studio 2005 jest dostępny w wersji Developer Edition i Team Edition. Mam wersję Professional, która, jak się wydaje, nie ma wbudowanego narzędzia profilera.

-AD

1

Używamy DevPartner z Visual Studio 2005. To daje analizę wydajności poszczególnych projektów w rozwiązania, które chcesz oglądać. Używamy go również do analizy zarządzania pamięcią i analizy błędów. Jest narzędziem komercyjnym, więc nie jest za darmo.

3

Jeśli twoja aplikacja nie wymaga szczególnego wysiłku procesora, dobrym wyborem jest model redgate ANTS Profiler - statystyki liniowe mogą być bardzo przydatne, a cały produkt jest czysty i dobrze zaprojektowany.

Jeśli twoja aplikacja wymaga dużej mocy procesora do normalnego działania, większość profilerów .NET dostępnych na rynku nie będzie w stanie jej obsłużyć. Jedynymi dwoma, które kiedykolwiek znalazłem, które będą działać w naprawdę ciężkiej aplikacji, są JetBrains dotTrace i YourKit. Oba są bardzo podobne, co nie jest zaskakujące, biorąc pod uwagę, że YourKit prawdopodobnie został założony przez byłego pracownika JetBrains. Osobiście wolę dotTrace, ale może to być po prostu dlatego, że użyłem tego po raz pierwszy i nigdy nie było żadnego powodu, by się zmieniać.

Przetestowałem ANTS, AQTime, DevPartner, GlowCode, Borland OptimizeIt i Intel VTune, a wszystkie z nich mają zbyt wiele narzutów, aby obsłużyć wymagającą aplikację. (VTune jest możliwym wyjątkiem, ale jest tak strasznie skomplikowany w konfiguracji i obsłudze, że nigdy nie byłem w stanie dokładnie określić, co może obsłużyć.) Jest on również bardzo drogi.)

0
Jeśli twoja aplikacja potrzebuje dużo procesora aby działać normalnie, większość profilerów .NET dostępnych na rynku nie będzie w stanie go obsłużyć.

Użyłem próbnej wersji profilera RedGate Ant na algorytmie optymalizującym, który normalnie wykorzystuje do 100% procesorów na maszynach z jednym rdzeniem i choć udało mu się to powolne, udało mi się przedrzeć i zgłosić wszystko, co potrzebowałem wiedzieć. Niezwykle pomocne narzędzie. Zastanawiam się, jakiego rodzaju algorytmy używasz w profilerze Anta.

Czy ktoś użył profilera VS?

2

Użyłem obu profilerów w DevPartnera Compuware'a (lubię nadal nazywać to "TrueTime") i Rational's Quantify. Zawsze lubiłem Quantify lepiej, ale ponieważ przeniosłem się między firmami, DevPartner jest zwykle "standardem".

Obydwa są drogie, ale (wydają się) dodają tyle wartości, że każdy komercyjny sklep nie powinien mieć problemu z inwestowaniem w niektóre miejsca.

Quantify nie wymagało specjalnych przebudowań projektu - co było WSPANIAŁE. Zmniejszyło się również mniej (to nie znaczy wiele, miało swoje problemy). DevPartner również ma tendencję do pękania wraz z wydaniem każdej nowej wersji Visual Stuido (może to jest teraz lepsze?). Kupuj roczną umowę serwisową, jeśli pójdziesz tą drogą.

Powiedziawszy to, często piszę, że klasa pamięta czas budowy i wypluwa (plik dziennika) czas, który upłynął w destruktorze. Użyłem QueryPerformanceCounter. Postawiłbym tę klasę na szczycie funkcji, którą chciałbym mieć na czasie. Możesz mieć ochotę na zrobienie makra, użyj preprocesora do włączenia tej klasy tylko w specjalnej kompilacji ...

2

Polecam profilera, który również zawiera na swojej stronie znacznik.

Jest także bezpłatny i łatwy w użyciu.

alt text http://www.eqatec.com/tools/profiler/profiler-logo.gif

+0

Wyszukuje tylko czas spędzony na każdej metodzie i * nie * dla każdej linii. Ale to nic nie kosztuje. – dummy

+0

Domyślam się, że * było * wolne – embert

+0

Rzeczywiście, to było za darmo. –