Какой простой прокси-сервер С++ (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.