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.

ugasoft
źródło
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.

yrp
źródło
4
Oto link do CodeAnalyst: developer.amd.com/CPU/CODEANALYST/Pages/default.aspx
epotter
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).

lsalamon
źródło
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());
}
Arty
źródło
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
10

Microsoft ma Windows Performance Toolkit .

Wymaga systemu Windows Vista, Windows Server 2008 lub Windows 7.

epotter
źródło
6
Jak to nie jest darmowe? Jest to część zestawu Windows SDK. Udało mi się go pobrać bez żadnych problemów. (Trzeba przyznać, że mamy subskrypcję MSDN, więc niektórzy ludzie mogą mieć inne doświadczenia niż ja.)
epotter z
1
Darmowy czy nie, link już nie działa poprawnie.
Tomáš Zato - Przywróć Monikę
7

Nowym dodatkiem jest Shiny .

W pobliżu

Buggieboy
źródło
3
Nie mogę znaleźć plików binarnych do pobrania, tylko kody źródłowe. Niezbyt wygodne.
Monsignor,
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

Coda
źródło
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 )

dudico
źródło
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
2

Proszę wypróbować mój profiler o nazwie cRunWatch. To tylko dwa pliki, więc łatwo jest zintegrować je z projektami i wymaga dodania dokładnie jednego wiersza w celu instrumentowania fragmentu kodu.

http://ravenspoint.wordpress.com/2010/06/16/timing/

Wymaga biblioteki Boost.

ravenspoint
źródło
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.).

Harold Ekstrom
źródło
0

Używam VSPerfMon, który jest StandAlone Visual Studio Profiler. Napisałem narzędzie GUI, które pomogło mi je uruchomić i spojrzeć na wyniki.

http://code.google.com/p/vsptree/


źródło
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.

Mi-La
źródło