Использование callgrind / kcachegrind для получения статистики по отдельным потокам - PullRequest
8 голосов
/ 04 марта 2010

Я бы хотел видеть, насколько «дорогой» каждый поток в моем приложении использует callgrind. Я профилировал с опцией --separate-thread=yes, которая дает вам файл callgrind для всего приложения, а затем по одному на поток.

Это полезно для просмотра профиля любого потока, но мне действительно нужен просто отсортированный список процессорного времени каждого потока, чтобы я мог видеть, какие потоки являются самыми большими.

Ответы [ 2 ]

3 голосов
/ 21 июля 2010

Valgrind / Callgrind не допускает такого поведения. Ни один kcachegrind не делает, но я думаю, что это будет хорошим улучшением. Возможно, некоторые ответы можно найти в их списке рассылки.

Рабочий , но очень скучный способ может заключаться в использовании опции --separate-thread=no и обновлении вашего кода, чтобы использовать для каждого потока другое имя функции или имя класса. В зависимости от сложности вашего кода это может быть ответ (с использованием 1computeData (), 2computeData (), ..)

0 голосов
/ 06 ноября 2014

Просто откройте несколько профилей в kcachegrind одновременно.

...