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.