Как я могу узнать, сколько времени тратится на каждую строку в коде C / C ++? - PullRequest
3 голосов
/ 20 февраля 2012

Я пытаюсь найти инструмент профилирования, с помощью которого я могу узнать, сколько времени тратится на каждую строку кода в программе C / C ++.Я работаю на платформах Linux (Ubuntu, Gentoo, SL) в основном с gcc.Я использую gprof, но иногда мне нужна информация "на строку".

Есть предложения?Спасибо!

Ответы [ 3 ]

2 голосов
/ 20 февраля 2012

В Linux вы можете использовать oprofile . Это примерный профилировщик, который работает практически на любой платформе и поддерживает регистры мониторинга производительности, если они доступны. На x86 работает как с AMD, так и с Intel.

Вы можете использовать его как отдельную программу, которая даст вам аннотированный источник, но есть доступный плагин (linuxtools) для eclipse, который прекрасно интегрируется в IDE.

1 голос
/ 20 февраля 2012

Что Zoom делает, это берет сэмплы стека на время настенных часов.

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

Это верно независимо от ввода-вывода, рекурсии, конкурирующих процессов, перестановки, всего того, что смущает многих профилировщиков.

1 голос
/ 20 февраля 2012

AMD CodeAnalyst - ваша лучшая ставка, она абсолютно бесплатна и работает на windows и linux, хотя в основном для процессоров AMD, поэтому процессоры не AMD не получат опции профилирования на основе MSR,Под Windows он также имеет отличную интеграцию для Visual Studio 2008 и 2010.

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

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