Jaki jest najlepszy darmowy profiler C ++ dla Windows? [Zamknięte]


224

Szukam profilera, aby znaleźć wąskie gardło w moim kodzie C ++. Chciałbym znaleźć bezpłatne, nieinwazyjne i dobre narzędzie do profilowania. Jestem programistą gier i używam PIX na Xbox 360 i uważam, że jest bardzo dobry, ale nie jest darmowy. Znam Intel VTune , ale też nie jest darmowy.


Wygląda na to, że VTune jest teraz darmowe: software.intel.com/en-us/vtune . Pobrałem wydanie społeczności i robi świetną robotę w profilowaniu C ++, a także zarządzaniu kodem C #
Dr. ABT

1
Jak to jest poza tematem? O ile wiem, narzędzia programistyczne są na ten temat. Jest jednak oparty na opiniach.
Nic Szerman

Odpowiedzi:


135

CodeXL zastąpił teraz End Code Line'd AMD Code Analyst i oba są bezpłatne, ale nie tak zaawansowane jak VTune. Jest też Sleepy , co jest bardzo proste, ale w wielu przypadkach działa.



1
Próbowałem teraz z tym pracować i wcale mi się to nie podobało. Nie mogłem nawet zrozumieć, w jaki sposób uzyskać całkowity czas funkcji% (w tym callees), co TrueTime może zrobić dobrze 10 lat temu.
Pavel Radzivilovsky

Napisałem adaptację sleepy, która nie zależy od wxWidgets, ale działa w wierszu poleceń. Uruchamiasz go przez pewien czas w stosunku do uruchomionego procesu, a następnie, gdy go zatrzymujesz, otrzymujesz statystyki tego, co ten proces spędzał. Jest nieinwazyjny, ponieważ nie musisz w żaden sposób modyfikować kodu, aby go użyć, ale zawiesza twoje wątki podczas odczytywania stosów wywołań. Potrzebne są również dostępne pliki pdb, aby uzyskać znaczący wynik, ale myślę, że dotyczy to dowolnego profilera.
CashCow,

Poleciłbym wypróbowanie Xperfa, który uznałem za lepszy od analityka kodu AMD.
MW_dev

1
CodeAnalyst nie będzie otrzymywać żadnych aktualizacji oprócz krytycznych poprawek. Przeszli na CodeXL. Oto link, dzięki czemu możesz zaktualizować swoją odpowiedź. Nawiasem mówiąc, dzięki za poinformowanie mnie o CodeAnalyst / XL.
Adri CS

61

Very Sleepy to profiler C / C ++ CPU dla systemów Windows (bezpłatny).
CppCheck to statyczny profiler C / C ++ CPU dla systemów Windows (bezpłatny).


20
googletest to platforma do testów jednostkowych. Jak wykorzystasz to do przeprowadzenia profilowania?
greatwolf

Jeśli używasz pliku binarnego Windows ze stosu gcc, jest to świetny wybór - AMD CodeAnalyst nie rozpoznaje symboli gcc w systemie Windows, ale bardzo senny!
Mike


17

Istnieje profilujący (precyzyjny dla funkcji) profiler dla MS VC 7.1 i wyższych o nazwie MicroProfiler. Możesz go pobrać tutaj (x64) lub tutaj (x86) . Nie wymaga żadnych modyfikacji ani dodatków do twojego kodu i jest w stanie wyświetlać statystyki funkcji z rozmówcami i odbiorcami w czasie rzeczywistym bez potrzeby zamykania aplikacji / zatrzymywania procesu profilowania.

Integruje się z VisualStudio, dzięki czemu można łatwo włączyć / wyłączyć profilowanie dla projektu. Możliwe jest również zainstalowanie go na czystej maszynie, wystarczy jedynie umieszczenie informacji o symbolu wraz z profilowaniem pliku wykonywalnego.

To narzędzie jest przydatne, gdy aproksymacja statystyczna z profilerów próbkujących, takich jak Very Sleepy, nie jest wystarczająca.

Szorstkie porównanie pokazuje, że bije on AQTime (gdy jest wywoływany w oprzyrządowaniu, przebieg na poziomie funkcji). Następujący program (pełna optymalizacja, wstawianie wyłączone) działa trzy razy szybciej z mikroprofilerem wyświetlającym wyniki w czasie rzeczywistym, niż z AQTime po prostu zbierającym statystyki:

void f()
{
    srand(time(0));

    vector<double> v(300000);

    generate_n(v.begin(), v.size(), &random);
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
}

1
Jest łatwy w użyciu i super szybki profiler. Tylko jeden problem, którego nie rozwiązałem, to problem polegający na tym, że po zakończeniu debugowania okno profilera nie zamyka się automatycznie i musisz go zabić za pomocą menedżera zadań (bez tego nie możesz ponownie skompilować projektu).
Ludek Vodicka

1
Zauważyłem, że po zamknięciu aplikacji zwykłym przyciskiem ZAMKNIJ okno profilera można również regularnie zamykać. Ale kiedy zamykam aplikację skrótem SHIFT + F5 (polecenie Zatrzymaj debugowanie VS), przycisk zamykania okna profilera jest wyłączony.
Ludek Vodicka

Nie działa z VS 2015.
rustyx

1
Naprawiono od 1.1.590. Zobacz aktualizacje na stronie Visual Studio Gallery ( visualstudiogallery.msdn.microsoft.com/… )
Arty

1
To jest naprawdę bardzo dobre! Powinien być oceniany znacznie wyżej! Bardzo prosty w instalacji i uruchomieniu oraz daje większość tego, co musisz wiedzieć. Moim drugim wyborem jest Windows Performance Analyzer: geekswithblogs.net/akraus1/archive/2015/04/21/163342.aspx
Steve



5

Bardzo polecam Windows Performance Toolkit (WPT) lub XPERF

Narzędzie wiersza polecenia xperf wiersza polecenia rejestruje dzienniki śledzenia zdarzeń dla systemu Windows (ETW), które można analizować za pomocą narzędzia GUI xperfview.

Użycie argumentu stosu poleceń w linii poleceń okazało się nieocenionym narzędziem dla mojej firmy, ponieważ profiluje i rozwiązuje problemy z wąskimi gardłami. Jedną z najbardziej przekonujących rzeczy jest to, że WPT można zainstalować w dowolnym środowisku, nawet na czcigodnym systemie Windows XP .

Na Windows 8 Windows Performance Analyzer przenosi xperf na jeszcze wyższy poziom.

Twarde liczby i statystyki podane w logach ETW nie mają sobie równych w szczegółach, z wyjątkiem wizualizera profilowego studio (2010/2012), który jest również świetnym, ale nie darmowym AFAIK.

Jeśli nigdy nie korzystałeś z Xperf ... nie wiesz, czego brakuje


1
Wiem, że brakuje mi działającego adresu URL do witryny.
Tomáš Zato - Przywróć Monikę

3

Korzystam z AQTime, jest to jedno z najlepszych narzędzi profilujących, jakie kiedykolwiek używałem. To nie jest bezpłatne, ale możesz uzyskać 30-dniową wersję próbną, więc jeśli planujesz zoptymalizować i profilować tylko jeden projekt, a 30 dni są dla Ciebie wystarczające, polecam korzystanie z tej aplikacji. ( http://www.automatedqa.com/downloads/aqtime/index.asp )


Tylko to narzędzie pomogło mi profilować skompilowaną w trybie wersji mieszaną (zarządzaną i natywną) aplikację internetową na IIS.
Monsignor,

Szkoda, że ​​nie wspierają ludzi, którzy próbują ocenić swój produkt.
Lucky Luke

Obecnie oferują 14-dniową wersję próbną z ograniczoną funkcjonalnością.
Max



0

Od lat korzystam z „TrueTime - części pakietu DevPartner firmy Compuware. Dostępna jest [darmowa wersja] (możesz wypróbować Compuware DevPartner Performance Analysis Community Edition.).



0

Możesz używać EmbeddedProfiler, jest on darmowy dla Linuksa i Windwos.

Profiler jest ingerujący (pod względem funkcjonalności), ale nie wymaga żadnych modyfikacji kodu. Wystarczy dodać konkretną flagę kompilatora (funkcje -finstrument dla gcc / MinGW lub / GH dla MSVC) i połączyć bibliotekę profilera. Może zapewnić pełne drzewo połączeń lub po prostu listę funkcji. Ma własne GUI analizatora.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.