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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top