Jak używać polecenia GPROF Linux

Jak używać polecenia GPROF Linux
Podczas pracy z kodem zawsze dobrze jest śledzić, w jaki sposób różne funkcje wykonują czas pod względem czasu. Dobry program powinien zakończyć się szybko, ale zależy to od prędkości wykonania jej funkcji. Im większy program jest, tym bardziej prawdopodobne jest, że ma różne zagnieżdżone funkcje, które, jeśli nie są dobrze zoptymalizowane, mogą powodować wąskie gardła dla całego programu.

Optymalizacja kodu jest kluczowym aspektem kodowania, a różne programy pomagają śledzić wydajność kodu. Narzędzia programowe są określane jako Profilery. Jeśli szukasz takiego, który jest oparty na Linux, masz GPROF do Twojej dyspozycji.

Praca z GPROF Profiler

GPROF jest profilem GNU, który mierzy wydajność programu. Mierzy wydajność programów napisanych w Fortran, C ++, Montaż i C. Wyniki generowane przez polecenie Linux pomagają zoptymalizować kod w celu szybszego wykonywania i wydajności, wyświetlając części programu zużywając najwięcej czasu wykonania.

Aby użyć polecenia GPOF do analizy programu, musisz go skompilować za pomocą -str opcja. Najpierw utwórzmy program do użycia dla naszego przykładu. Tutaj tworzymy program C, kompilujemy go, uruchamiamy wyjście z GPOF, a następnie sprawdzamy raport generowany przez GPOF, aby zobaczyć, jak wykonuje polecenie.

Nasz plik programu jest nazwany Demo1.C. Aby skompilować za pomocą kompilatora GCC, musisz dodać -str Opcje dodania dodatkowych szczegółów do użycia przez GPROF. Poleceniem będzie:

$ gcc -pg demo1.C -O wyjściowe 1

Nasze skompilowane dane wyjściowe to wyjście1 Po wygenerowaniu musimy go uruchomić normalnie za pomocą następującego polecenia:

$ ./wyjście1

Uruchomienie tego wykonywalnego generuje dane profilowania, które domyślnie są wymienione gmon.na zewnątrz.

GPROF współpracuje z GMON.Aby wyświetlić wszystkie szczegóły dotyczące programu.

$ gprof wyjściowe 1 gmon.na zewnątrz

Zwróć uwagę, że GPROF przyjmuje dwa argumenty: kompilowany program i GMON.na zewnątrz. Raport wyjściowy zawiera dwie sekcje: płaski profil i Generowanie profilu grafu połączeń.

Analiza wyjścia z profilera GPROF

1. Płaski profil

Na podstawie poprzedniego wyjścia możemy zwrócić uwagę na różną sekcję w raporcie.

Pierwszą rzeczą, na którą należy zwrócić uwagę, jest różne funkcje, które miał program. W tym przypadku mieliśmy FUNC3, FUNC2, FUNC1, I Randomnum wymienione w nazwa Sekcja. % czas reprezentuje czas działania każdej z funkcji. Widzimy, że Func3 Zajęło to najdłuższy czas, co sugeruje, że gdybyśmy potrzebowali optymalizacji naszego programu, odtąd zaczniemy.

połączenia reprezentują liczbę razy, w których wywoływana jest każda z funkcji. Dla każdej funkcji czas spędzony na każdej funkcji na wywołanie jest reprezentowany w Self MS/Call. Przed osiągnięciem określonej funkcji możesz również wyświetlić czas spędzony na funkcji powyżej, Skumulowane sekundy, To dodaje siebie drugie i czas spędzony na poprzednich funkcjach.

Samo sekundy to czas spędzony na samej funkcji. Całkowity MS/Call to czas podejmowany na funkcję, w tym czas przyjmowany na jej potomków dla każdego wywołania wykonanego do funkcji.

Korzystając wcześniej z podanych szczegółów, możesz teraz zoptymalizować wydajność programu, aby zobaczyć, która część wymaga ponownego przetworzenia, aby skrócić czas wykorzystania czasu.

2. Wykres połączenia

Jest to tabela reprezentująca funkcję i jej dzieci.

indeks wymienia bieżącą funkcję, z którą można dopasować numer do jej nazwy po prawej stronie.

%czas reprezentuje czas spędzony na funkcji i jej dzieci, podczas gdy samego siebie to czas poświęcony na funkcję z wyłączeniem jej dzieci.

Najlepszą częścią wykresu wywołania jest to, że każdy szczegół jest dobrze reprezentowany i możesz uzyskać więcej informacji o dowolnych wynikach z wyświetlanego wyjścia na wierszu poleceń.

Wniosek

Najważniejsze jest to, że podczas pracy z programami korzystającymi z GCC kompilator, zawsze możesz sprawdzić ich prędkość wykonania, aby wiedzieć, jak najlepiej je zoptymalizować. Wprowadziliśmy, czym jest polecenie GPROF i co robi. Ponadto widzieliśmy praktyczny przykład używania go, aby dać ci przewagę w optymalizacji kodu.