Hvordan bruke GProf Linux -kommandoen

Hvordan bruke GProf Linux -kommandoen
Når du jobber med kode, er det alltid bra å følge med på hvordan de forskjellige funksjonene utfører når det gjelder tid. Et godt program skal fullføre raskt, men det avhenger av utførelseshastigheten til funksjonen. Jo større et program er, jo mer sannsynlig har det forskjellige nestede funksjoner som, om ikke godt optimalisert, kan forårsake flaskehalser for hele programmet.

Kodeoptimalisering er et sentralt aspekt ved koding og forskjellige programmer hjelper til med å spore kodeytelsen. Programvareverktøyene blir referert til som profilere. Hvis du er ute etter en som er Linux-basert, har du det GPROF til din disposisjon.

Arbeider med GProf -profiler

GPROF er en GNU -profiler som måler ytelsen til et program. Den måler ytelsen til programmer skrevet i Fortran, C ++, Assembly og C. Resultatene generert av Linux -kommandoen hjelper til med å optimalisere koden for raskere utførelse og effektivitet ved å vise delene av programmet som konsumerer mest utførelsestid.

For å bruke GPROF -kommandoen til å analysere programmet ditt, må du samle det ved å bruke -s alternativ. La oss først lage et program som skal brukes til vårt eksempel. Her oppretter vi et C -program, kompilerer det, kjører utdataene med GPROF, og sjekker deretter rapporten generert av GPROF for å se hvordan kommandoen utfører.

Programfilen vår heter Demo1.c. For å kompilere den ved hjelp av GCC -kompilatoren, må du legge til -s alternativer for å legge til ekstra detaljer som skal brukes av GPROF. Kommandoen vil være:

$ gcc -pg demo1.C -o Output1

Vår kompilerte produksjon er utgang1 Og når vi er generert, må vi kjøre den normalt ved å bruke følgende kommando:

$ ./utgang1

Å kjøre denne kjørbare genererer profileringsdataene som som standard er navngitt gmon.ute.

GPROF jobber med GMON.ut for å se alle detaljene om programmet.

$ gprof output1 gmon.ute

Merk at GPROF tar to argumenter: det sammensatte programmet og GMON.ute. Utgangsrapporten inneholder to seksjoner: flatprofil og Generering av samtaleprofiler.

Analysere utgangen fra GProf -profileren

1. Flat profil

Fra forrige utdata kan vi merke den forskjellige seksjonen i rapporten.

Den første tingen å merke seg er de forskjellige funksjonene som programmet hadde. I dette tilfellet hadde vi Func3, Func2, Func1, og randomnum oppført i Navn seksjon. De % tid representerer kjøretiden for hver av funksjonene. Vi ser at func3 Tok den lengste tiden å løpe, og antydet at hvis vi trengte å optimalisere programmet vårt, var det der vi ville begynne.

De samtaler Representere antall ganger som hver av funksjonene blir påkalt. For hver funksjon blir tiden brukt på hver funksjon per samtale representert i selv ms/samtale. Før du når en spesifikk funksjon, kan du også se tiden brukt på funksjonen over den, Kumulative sekunder, Det legger til det selv sekundet og tiden brukt på de tidligere funksjonene.

De Selv sekund er tiden brukt på en spesifikk funksjon alene. De Total MS/Call er tiden tatt på en funksjon, inkludert tiden som ble tatt på etterkommere for hver samtale som ble gjort til funksjonen.

Ved å bruke de tidligere gitte detaljene, kan du nå optimalisere ytelsen til programmet ditt for å se hvilken del som trenger noen omgivelser for å redusere tidsbruken.

2. Ring graf

Det er en tabell som representerer en funksjon og dens barn.

De indeks viser den nåværende funksjonen du kan matche nummeret til navnet til høyre.

De %tid representerer tiden brukt på en funksjon og dens barn mens selv- er tiden tatt på funksjonen ekskluderer barna.

Den beste delen med samtalegrafen er at alle detaljer er godt representert, og du kan få mer informasjon om eventuelle resultater fra utdataene som vises på kommandolinjen.

Konklusjon

Hovedpoenget er at når du jobber med programmer som bruker GCC kompilator, du kan alltid sjekke utførelseshastigheten for å vite hvordan du best kan optimalisere dem. Vi introduserte hva GPROF -kommandoen er og hva den gjør. Videre har vi sett et praktisk eksempel på å bruke det for å gi deg en overhånd i å optimalisere koden din.