Utilizzando callgrind / KCachegrind per ottenere statistiche per-thread
-
24-09-2019 - |
Domanda
Mi piacerebbe essere in grado di vedere come "costoso" ogni thread nella mia applicazione utilizza callgrind. Ho profilata con l'opzione --separate-thread=yes
che ti dà un file callgrind per l'intera applicazione e quindi una per-thread.
Questo è utile per visualizzare il profilo di un dato thread, ma quello che voglio è solo un elenco ordinato di tempo di CPU da ogni thread in modo da posso vedere che le discussioni sono i più grandi maiali.
Soluzione
Valgrind / Callgrind non consente questo comportamento. Né KCachegrind fa, ma penso che sarà un buon miglioramento. Forse alcune risposte potrebbero essere trovati sul loro mailing-list.
Un lavoro ma davvero noioso modo potrebbe essere quello di utilizzare l'opzione --separate-thread=no
, e aggiornare il codice per utilizzare per ogni thread di un diverso il nome della funzione o della classe nome. A seconda della complessità vostro codice, potrebbe essere la risposta (usando 1computeData (), 2computeData (), ..)
Altri suggerimenti
Basta aprire più profili in kcachegrind allo stesso tempo.