Использование callgrind/kcachegrind для получения статистики каждого потока

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

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

2 ответов


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

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


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