L'ottimizzazione del codice è un aspetto chiave della codifica e vari programmi aiutano a tracciare le prestazioni del codice. Gli strumenti software sono indicati come Profiler. Se ne stai cercando uno basato su Linux, hai GProf A tua disposizione.
Lavorare con GProf Profiler
Il GProf è un profiler GNU che misura le prestazioni di un programma. Misura le prestazioni dei programmi scritti in Fortran, C ++, Assembly e C. I risultati generati dal comando Linux aiutano a ottimizzare il codice per un'esecuzione ed efficienza più rapida visualizzando le parti del programma che consumano il massimo dei tempi di esecuzione.
Per utilizzare il comando GProf per analizzare il programma, è necessario compilarlo usando il -pag opzione. Innanzitutto, creiamo un programma da utilizzare per il nostro esempio. Qui, creiamo un programma C, compilialo, eseguiamo l'output con GProf, quindi controlliamo il rapporto generato dal GProf per vedere come esegue il comando.
Il nostro file di programma è nominato Demo1.C. Per compilarlo usando il compilatore GCC, è necessario aggiungere il -pag Opzioni per aggiungere ulteriori dettagli da utilizzare da GPROF. Il comando sarà:
$ gcc -pg demo1.C -o output1
La nostra uscita compilata è output1 E una volta generato, dobbiamo eseguirlo normalmente usando il seguente comando:
$ ./output1
L'esecuzione di questo eseguibile genera i dati di profilazione che, per impostazione predefinita, sono nominati GMON.fuori.
GProf funziona con GMON.fuori per visualizzare tutti i dettagli sul programma.
$ GProf Output1 GMON.fuori
Si noti che GProf prende due argomenti: il programma compilato e il GMON.fuori. Il rapporto di output contiene due sezioni: il profilo piatto e il Generazione del profilo di chiamata-graph.
Analizzare l'output dal profiler GProf
1. Profilo piatto
Dall'output precedente, possiamo notare le varie sezioni del rapporto.
La prima cosa da notare sono le varie funzioni che il programma ha avuto. In questo caso, avevamo il func3, func2, func1, E casuale elencato nel nome sezione. IL % tempo rappresenta il tempo di esecuzione di ciascuna delle funzioni. Vediamo che il func3 Ci è voluto il tempo più lungo per correre, implicando che se avessimo bisogno di ottimizzare il nostro programma, ecco dove avremmo iniziato.
IL chiamate rappresentare il numero di volte in cui ciascuna delle funzioni viene invocata. Per ogni funzione, il tempo trascorso su ciascuna funzione per chiamata viene rappresentato nel Self MS/Call. Prima di raggiungere una funzione specifica, puoi anche visualizzare il tempo trascorso sulla funzione sopra di essa, il secondi cumulativi, Ciò aggiunge il secondo e il tempo trascorso nelle funzioni precedenti.
IL Self Seconds è il tempo trascorso solo per una funzione specifica. IL totale MS/Call è il tempo impiegato su una funzione che include il tempo impiegato sui suoi discendenti per ogni chiamata fatta alla funzione.
Utilizzando i dettagli precedentemente forniti, ora puoi ottimizzare le prestazioni del programma per vedere quale parte necessita di riferimento per ridurre l'uso del tempo.
2. Chiama il grafico
È una tabella che rappresenta una funzione e i suoi figli.
IL indice elenca la funzione corrente con cui è possibile abbinare il numero al suo nome a destra.
IL %tempo rappresenta il tempo trascorso per una funzione e i suoi figli mentre il se stesso è il tempo impiegato dalla funzione escludendo i suoi figli.
La parte migliore con il grafico delle chiamate è che ogni dettaglio è ben rappresentato e puoi ottenere maggiori informazioni su eventuali risultati dall'output visualizzato sulla riga di comando.
Conclusione
La linea di fondo è che quando si lavora con programmi che usano il GCC compilatore, puoi sempre controllare la loro velocità di esecuzione per sapere come ottimizzarli al meglio. Abbiamo introdotto ciò che è il comando GProf e cosa fa. Inoltre, abbiamo visto un esempio pratico di usarlo per darti un sopravvento per ottimizzare il tuo codice.