VS2010 Различия в производительности при отладке / профилировании - PullRequest
4 голосов
/ 09 ноября 2010

[См. Правку @ снизу - проблема может быть не в том, что я изначально думал]

Привет всем,

Я пишу графическую библиотеку, которая обрабатывает ряд фильтров / эффектоввключая размытие.

Я пытался оптимизировать свой код и наткнулся на что-то, чего я не понимаю ...

Когда я запускаю код без ,Мастер производительности, простое размытие 3x3 на маленьком изображении может занять несколько секунд (намного дольше, чем следует).Если я прерву выполнение во время этой задержки, я получу:

No Source Available
System.dll!Microsoft.Win32.SystemEvents.WindowThreadProc() + 0xc2 bytes

Адрес соответствует между запусками / щелчками

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

Я вижу, что процессор на 50% (двухъядерный ЦП, нет многопоточного банкомата, поэтому используется максимум 1 ядро) для продолжительности размытия в зависимости от того, какой метод Iиспользуйте для запуска моего приложения.

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

Я попытался переключиться с определения отладки на выпуск сборки и получить тот же результат.

Может кто-нибудь объяснить мне, почему мой код будет работать быстрее с подключенным профилировщиком?Такое чувство, что я где-то совершаю глупую ошибку

РЕДАКТИРОВАТЬ:

Сценарии / Скорости:

  • В Windows XP:
    • Отладка в VS: Медленный
    • Профилирование в VS: быстрое
    • Отладка / выпуск Построение вне VS: Быстрое

Затем я переключился на вторую машину и получил ...

  • В Windows 7:
    • Отладка в VS: Быстрая
    • Профилирование в VS: быстро
    • Отладка / выпуск Построить вне VS: быстро

Что, по-видимому, указывает на то, что я неправильно определил проблему -Дело не в том, что профилировщик улучшает вещи, а в том, что отладка в IDE убивает его ... Сначала я не подозревал, что отладка была проблемой, так как я начал разрабатывать на машине Win7, у которой не было проблем, затем переключился на машину XP иПредполагается, что изменение скорости было связано с аппаратными различиями.Только когда я начал профилировать, я увидел, как быстро это работает ...

1 Ответ

2 голосов
/ 09 ноября 2010

Это полное предположение, но работает ли visual studio с правами администратора, а ваша программа - нет? По сути, вы получаете диалог продвижения UAC при запуске Visual Studio, и, таким образом, если вы запускаете там через отладчик / профилировщик, вы можете максимально использовать процессор, но процесс «пространства пользователя» может быть запрещен? Смежным вопросом будет спросить, улучшается ли производительность при работе с отладчиком (не с профилировщиком) или нет.

Общая догадка, но может быть, это место, чтобы начать искать.

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