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.
224
Odpowiedzi:
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.
źródło
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).
źródło
Proffy jest całkiem fajny: http://pauldoo.com/proffy/
Uwaga: Napisałem to.
źródło
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:
źródło
Microsoft ma Windows Performance Toolkit .
Wymaga systemu Windows Vista, Windows Server 2008 lub Windows 7.
źródło
Nowym dodatkiem jest Shiny .
W pobliżu
źródło
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
źródło
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 )
źródło
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.
źródło
Użyłem Luke'a Stackwalkera i to zadziałało w moim projekcie Visual Studio.
Inne interesujące projekty to:
źródło
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.).
źródło
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
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.
źródło