Я заинтересован в тестировании скорости некоторых вызовов функций из кода, написанного на C / C ++. Я искал, и мне было предложено использовать платформу Valgrind с инструментом Callgrind.
Я кратко прочитал руководство, но мне все еще интересно, как я могу использовать функциональные возможности инструмента, чтобы оценить время выполнения моей функции.
Мне было интересно, смогу ли я получить некоторые подсказки, как я могу достичь своей цели.
Любая помощь будет оценена.
Скомпилируйте вашу программу с помощью символов отладки (например, символы GDB работают нормально, которые активируются с помощью флага «-ggdb»).
Если вы выполняете свою программу следующим образом:
./program
Затем запустите его с помощью Valgrind + Callgrind с помощью этой команды:
valgrind --tool=callgrind ./program
Затем Callgrind создаст файл с именем callgrind.out.1234 (1234 — это идентификатор процесса и, вероятно, будет отличаться при запуске). Откройте этот файл с помощью:
cg_annotate callgrind.out.1234
Вы можете использовать grep для извлечения имени вашей функции. В левом столбце отображается количество инструкций, используемых для этой функции. Функции, использующие сравнительно небольшое количество инструкций, будут игнорироваться.
Если вы хотите увидеть на выходе хорошую графику, я бы порекомендовал вам установить KCachegrind.