Какой простой прокси-сервер С++ (VС++)?
В прошлом я использовал несколько профайлеров и не нашел их особенно легко. Может быть, я выбрал плохих, может быть, я действительно не знал, чего я ожидал!
Но я хотел бы знать, есть ли какие-либо "стандартные" профилировщики, которые просто заходят и работают? Я не думаю, что мне нужны подробные подробные отчеты, просто чтобы забрать крупные черные пятна. Простота использования для меня важнее в данный момент.
Это VС++ 2008, который мы используем (я запускаю стандартную редакцию лично). Я не думаю, что в IDE есть инструменты для этого, я не вижу никакого взгляда на главные меню?
Ответы
Ответ 1
VS встроен:
Если у вас есть командная версия, вы можете использовать Профайлер Visual Studio.
Другие параметры:
В противном случае проверьте этот поток.
Создайте свой собственный легко:
Я лично использую внутренне построенный на основе API Win32 QueryPerformanceCounter.
Вы можете сделать что-то приятное и удобное в сотне строк кода или меньше.
Процесс прост: создайте макрос в верхней части каждой функции, которую вы хотите профилировать, как PROFILE_FUNC(), и это добавит к статистике, управляемой внутри компании. Затем добавьте еще один макрос, называемый PROFILE_DUMP(), который выгрузит выходы в текстовый документ.
PROFILE_FUNC() создает объект, который будет использовать RAII для регистрации количества времени до уничтожения объекта. Оба конструктора этого объекта RAII и деструктор вызовут QueryPerformanceCounter
. Вы также можете оставить эти строки в своем коде и управлять поведением с помощью #define PROFILING_ON
Ответ 2
Я предлагаю очень простой метод (который я узнал из чтения Mike Dunlavey в SO):
Просто приостановите программу.
Сделайте это несколько раз, чтобы получить разумный образец. Если определенная функция занимает половину времени выполнения вашей программы, вероятность того, что вы быстро поймаете ее в действии.
Если вы повышаете производительность этой функции на 50%, тогда вы просто улучшили общее время выполнения на 25%. И если вы обнаружите, что это даже не нужно вообще (я нашел несколько таких случаев за короткое время, когда я использовал этот метод), вы просто сократили время выполнения пополам.
Я должен признаться, что сначала я скептически относился к эффективности этого подхода, но, пробовав его на пару недель, я зацепился.
Ответ 3
Я всегда использовал AMD CodeAnalyst, я считаю его довольно простым в использовании и дает интересные результаты. Я всегда использовал профиль, основанный на времени, в котором я обнаружил, что он хорошо взаимодействует с информацией об отладке моих приложений, позволяя мне найти, где время тратится на процедуру, инструкцию на С++ и уровень одной сборки.
Ответ 4
Я использовал lt prof в прошлом для быстрого запуска моего приложения на С++. Он работает довольно просто и работает со скомпилированной программой, не требует и перехватчиков исходного кода или настроек. Я полагаю, есть пробная версия.
Ответ 5
Очень простой (и бесплатный) способ профилирования - установить отладчики Windows (cdb/windbg), установить bp в интересующем месте и выдать команду wt
( "Trace and Watch Data" ). Подробнее см. MSDN.