2010-03-04 15 views
8

Ich möchte in der Lage sein zu sehen, wie "teuer" jeder Thread in meiner Anwendung Callgrind verwendet. Ich profilierte mit der --separate-thread=yes Option, die Ihnen eine Callgrind-Datei für die gesamte App und dann eine pro-Thread gibt.Verwenden von callgrind/kcachegrind, um per-Thread-Statistiken zu erhalten

Dies ist nützlich, um das Profil eines bestimmten Threads anzuzeigen, aber was ich wirklich will, ist nur eine sortierte Liste der CPU-Zeit von jedem Thread, damit ich sehen kann, welche Threads die größten Schweine sind.

Antwort

3

Valgrind/Callgrind lässt dieses Verhalten nicht zu. Weder kcachegrind, noch ich denke es wird eine gute Verbesserung sein. Vielleicht könnten einige Antworten auf ihrer Mailing-Liste gefunden werden.

A arbeiten, aber wirklich langweilig Weg sein könnte Option zu verwenden --separate-thread=no und Ihren Code aktualisieren für jeden Thread eine verschiedene Funktionsnamen oder Klassennamen zu verwenden. Abhängig von der Komplexität Ihres Codes könnte dies die Antwort sein (mit 1computeData(), 2computeData(), ..)

+0

Ja, das ist ungefähr die gleiche Schlussfolgerung, die ich erreicht habe. Schätze, es ist eine gute Idee für einen Open-Source-Beitrag! –

-2

Öffnen Sie einfach mehrere Profile in kcachegrind gleichzeitig.