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.