Callgrind: как использовать инструмент Callgrind для оценки скорости работы функции

Я заинтересован в тестировании скорости некоторых вызовов функций из кода, написанного на C / C ++. Я искал, и мне было предложено использовать платформу Valgrind с инструментом Callgrind.

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

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

Любая помощь будет оценена.

1

Решение

Скомпилируйте вашу программу с помощью символов отладки (например, символы GDB работают нормально, которые активируются с помощью флага «-ggdb»).

Если вы выполняете свою программу следующим образом:

./program

Затем запустите его с помощью Valgrind + Callgrind с помощью этой команды:

valgrind --tool=callgrind ./program

Затем Callgrind создаст файл с именем callgrind.out.1234 (1234 — это идентификатор процесса и, вероятно, будет отличаться при запуске). Откройте этот файл с помощью:

cg_annotate callgrind.out.1234

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

Если вы хотите увидеть на выходе хорошую графику, я бы порекомендовал вам установить KCachegrind.

2

Другие решения