текстовый просмотрщик для профилирования результатов - PullRequest
4 голосов
/ 29 ноября 2010

Знаете ли вы текстовое приложение для просмотра результатов профилирования приложения?Результаты профилирования в основном содержат список трассировок вызовов функций C ++ и частоту, с которой встречались эти трассировки;теперь я ищу консольный инструмент для анализа необработанных данных (какая обратная трассировка встречалась чаще всего; какая функция вызывается чаще всего, независимо от трассировки вызовов ...).

До сих пор я создал callgrind-совместимые файлы из необработанных данных, а затем использовать отличный инструмент KCachegrind для анализа;но теперь я также ищу инструмент, который работает без текстового терминала.Есть идеи?

Ответы [ 2 ]

1 голос
/ 29 ноября 2010

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

Это была хорошая демонстрация, но действительно ли я ее использовал?Недолго.

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

Дело в том, чтоПрограмма, вероятно, делает что-то расточительное в то время.(Если это не так, вы не можете ускорить его.) Независимо от того, что это расточительная вещь, она состоит из некоторого процента времени, потраченного по плохим причинам, например, 10%, 50%, 90% или что-то еще.В течение этого времени он находится в стеке, поэтому проверка образцов стека покажет это.

И вам не нужно смотреть на очень многие из них.Если что-то занимает 50% времени, 1000 сэмплов покажут это примерно на 500, а 10 сэмплов покажут это примерно на 5. Большее количество сэмплов оценит процент с дополнительной цифрой точности.Если ваша цель состоит в том, чтобы изолировать проблему, чтобы вы могли ее исправить, вам не понадобится эта дополнительная цифра.

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

То, что он не показывает вам, является причиной выполнения оператора, как вы знаете,если это расточительно.Просмотр контекста оператора в стеке говорит вам об этом.

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

1 голос
/ 29 ноября 2010

Посмотрите на callgrind_annotate.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...