W systemie Windows wypróbowałem AMD Codeanalyst, Intel VTune i profiler w Visual Studio Team Edition.
Codeanalyst zawiera błędy (często się zawiesza), a w moim kodzie jego wyniki są często niedokładne. Jego interfejs użytkownika jest nieintuicyjny. Na przykład, aby dotrzeć do stosu wywołań wyświetlanego w wynikach profilu, należy kliknąć kartę „Procesy”, a następnie kliknąć nazwę pliku EXE swojego programu, a następnie kliknąć przycisk paska narzędzi z małymi literami „CSS”. Jest jednak darmowy, więc równie dobrze możesz go wypróbować i działa (z mniejszą liczbą funkcji) bez procesora AMD.
VTune (700 USD) ma okropny interfejs użytkownika IMO; w dużym programie trudno jest znaleźć określone drzewo wywołań, które chcesz, i możesz patrzeć tylko na jeden „węzeł” w programie na raz (funkcję z jej bezpośrednimi wywołania i wywołania) - nie możesz spojrzeć na kompletne drzewo wywołań. Jest widok wykresu połączeń, ale nie mogłem znaleźć sposobu, aby wyświetlić na wykresie względne czasy wykonania. Innymi słowy, funkcje na wykresie wyglądają tak samo bez względu na to, ile czasu w nich spędzono - to tak, jakby całkowicie pominęły sens profilowania.
Profiler programu Visual Studio ma najlepszy GUI z trzech, ale z jakiegoś powodu nie jest w stanie zebrać próbek z większości mojego kodu (próbki są zbierane tylko dla kilku funkcji w całym moim programie C ++). Nie mogłem też znaleźć ceny ani sposobu na bezpośredni zakup; ale pochodzi z subskrypcją MSDN mojej firmy. Visual Studio obsługuje kod zarządzany, natywny i mieszany; Nie jestem pewien co do pozostałych dwóch profilerów w tym względzie.
Podsumowując, nie znam jeszcze dobrego profilera! Na pewno sprawdzę tutaj inne sugestie.