Ho bisogno di profilare un codice che esegua C++ su Linux. Ragazzi, potete consigliare alcuni profiler?Che cos'è un buon profiler facile da usare per C++ su Linux?
risposta
valgrind è un noto linux profiler
pensiero valgrind era più per perdita di memoria controllo .. Sto cercando di vedere quali funzioni vengono chiamate ecc. – shergill
usa lo strumento suite chiamato "callgrind" – dfa
Valgrind è semplicemente un framework per la creazione di strumenti dinamici. Anche se è diventato sinonimo di Memcheck, uno strumento costruito su Valgrind.Callgrind è un esperto di profiler. – Falaina
io sono un fan di Oprofile. Si tratta di installare un modulo del kernel e ha un po 'di una curva di apprendimento, ma è abbastanza potente e funziona molto bene per programmi/programmi ottimizzati senza eseguire il debug dei simboli.
Vtune è un altro profiler molto potente realizzato da Intel. Credo che la versione per Linux sia gratuita per software non commerciale.
C'è anche la suite di strumenti Valgrind proposta da dfa. Callgrind sarebbe probabilmente quello che ti interessa di più. Anche Cachegrind (il cui set di funzionalità è un sottoinsieme di Callgrind) e Massif sono interessanti, ma non ho esperienza con quest'ultimo.
+1 per oprofile, che non è uno "strumento facile" – dfa
Haha, true. Probabilmente non dovrei rendere il suono così facile :) Non è certamente così semplice come "esegui il programma sotto di esso" come strumenti Vtune e Valgrind, ma sento che ti ci abitui abbastanza velocemente. – Falaina
oprofile sembra interessante - supporta x86_64? – LiraNuna
gprof è lo strumento gnu standard per la profilatura.
Google ha anche un bel profiler come parte del google-perftools - che sono inclusi in Debian/Ubuntu e forse altre distribuzioni.
Dai uno sguardo a KCacheGrind che è un frontend grafico a valgrind e lo rende davvero facile da usare.
Utilizzare gprof.
Basta compilare con il flag -pg
(credo (ma non sono sicuro) che devi girare le ottimizzazioni) e usare gprof per analizzare il file gmon.out che il tuo eseguibile produrrà.
esempio:
gcc -pg -o whatever whatever.c
./whatever
gprof whatever gmon.out
Stessa cosa con g ++ e CPP.
Il profiling del codice non ottimizzato è un po 'inutile, non è vero? Allo stesso modo, il codice di profilazione che è stato pesantemente modificato con -pg ti porta spesso a ottimizzare i punti sbagliati. – federal
Zoom da RotateRight (http://www.rotateright.com) è quello che ho usato. Ha una vista a farfalla delle funzioni e puoi fare doppio clic su qualsiasi funzione per immergerti nel codice sorgente o asm. Costruisci con informazioni di debug (-g) per vedere la tua fonte, ma dovresti comunque creare e creare il codice ottimizzato.
Basta dare a questo programma un colpo, è davvero molto carino! Attualmente il mio profiler preferito su Linux; tuttavia vale la pena ricordare che richiede che il codice sia compilato con '-fno-omit-frame-pointer' per un profilo efficace. –
Il collegamento sembra morto. Qualcuno sa dove (o se) può essere trovato altrove? –
Dai uno sguardo allo Sysprof. Probabilmente la distribuzione è già disponibile.
Nota che tutti i profiler citati funzionano meglio se la tua applicazione è compilata con i puntatori dei frame. Cioè, dovresti usare -fno-omit-frame-pointer sulla riga di comando gcc.
È necessario aggiungere tag Linux e C++. Probabilmente otterrai una risposta e una gamma di opinioni migliori. – Duck
Sembra un duplicato di http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux. –
ad esempio: likwid, LLTng, oprofile, valgrind, vtune, gprof, perf, gperftools, pTop – Shan