Тестирование производительности кода C ++ - PullRequest
2 голосов
/ 05 октября 2010

Какие бесплатные инструменты я могу использовать для тестирования производительности кода C ++ в Linux? По сути, я хочу определить узкое место в коде и улучшить производительность. Мое приложение в основном включает в себя вычислительный код с использованием данных из сети. Поэтому я хотел бы повысить скорость выполнения кода.

Спасибо.

Ответы [ 4 ]

7 голосов
/ 05 октября 2010

Для типичных тестов производительности это то, что я использую.

  • gprof / oprofile - для интенсивного профилирования вашего кода.
  • netstat / ethereal - для статистики сети
  • iostat / sar - для ввода-вывода
  • vmstat - для памяти
  • mpstat / sar - для использования процессором

Теперь вы можете изолировать проблемы, основываясь на результатах этих инструментов.

Например: - если ввод / вывод постоянен и находится в определенных пределах, вы можете устранить проблему ввода / вывода как проблему.Если загрузка процессора велика, как показано в моем mpstat, то приступайте к профилированию с помощью gprof / oprofile.

Без использования всех их вместе для разных запусков трудно определить узкое место.

Примечание: U может написать сценарий для запуска их всех вместе и сохранять результаты в назначенных папках для каждого запуска.

2 голосов
/ 05 октября 2010

Я рекомендую Valgrind для

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

Вывод callgrind может быть визуально отображен через KCacheGrind.

1 голос
/ 05 октября 2010

Самый лучший из известных мне профилировщиков для Linux - Zoom . Хотя это коммерческий продукт, он не слишком дорогой, и вы можете получить бесплатную 30-дневную пробную лицензию по запросу

0 голосов
/ 05 октября 2010

Как говорит @Paul, попробуйте Zoom .

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

Мне также сказали, что OProfile может это сделать, но вы должны знать, что вам нужно для этого.

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