valgrind — исследование класса в программном обеспечении C ++ во время выполнения

У меня есть программа на C ++, и моя проблема в том, что я хотел бы знать:

  • Какие методы top10, top5, topX называются наиболее
  • Какие классы являются самыми тяжелыми для вычислений или какие потоки требуют максимальных тактов

это можно сделать с помощью таких инструментов, как valgrind, perf или подобное под Linux?

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

В общем, как определить, какой класс или метод ответственен за самые большие сбои в ветвлении и потерю производительности?

2

Решение

Вы ищете профилировщик, такой как gprof.

2

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

Программа, которую вы ищете, называется профилировщиком. Он дает вам список вызванных методов и процент времени выполнения вашей программы, который они используют. Если вы используете Linux, вы можете использовать такие инструменты, как valgrind, в Windows я лично использую Very Sleepy. Вы также можете увидеть эту ветку для списка профилировщика под Linux:
нить

1

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

1
По вопросам рекламы [email protected]