[См редактировать @ внизу - проблема не может быть то, что я изначально думал]различия VS2010 производительности при отладке/профилировании
Привет,
Я пишу графическую библиотеку, которая обрабатывает ряд фильтры/эффекты, включая размытие.
Я пытался оптимизировать свой код и наткнулся на что-то я не понимаю ...
Когда я запускаю код без мастера производительности, простой 3x3 пятно на маленьком изображении может занять несколько секунд (гораздо дольше, чем нужно). Если я нарушу выполнение во время этой задержки, я получаю:
No Source Available
System.dll!Microsoft.Win32.SystemEvents.WindowThreadProc() + 0xc2 bytes
Адрес согласуется между запусками/щелкает
Если я запускаю код с помощью мастера Performance, эффект размытия происходит с не заметной задержки ,
Я вижу, что процессор находится на 50% (двухъядерный процессор, без многопоточного банкомата, который максимизирует 1 ядро) на время размытия, какой бы метод я ни использовал для запуска моего приложения.
Если я увеличиваю сложность размытия, чтобы получить заметные задержки, я бы предположил, что прикрепление профилировщика повышает производительность не менее чем на 2 порядка.
Я попытался переключиться с Debug, чтобы определить определение сборки и получить тот же результат.
Может кто-нибудь объяснить мне, почему мой код будет работать быстрее с подключенным профилировщиком? Такое ощущение, что я делаю глупую ошибку где-то
EDIT:
Сценарии/Скорости:
- В Windows XP:
- Debugging в VS: Slow
- Профилирование в VS: Быстрое
- Debug/Release Bu ИСД вне VS: Fast
Затем я переключился на мою вторую машину и получил ...
- В Windows 7:
- Debugging в VS: Fast
- профилированию в VS: Fast
- Debug/Release сборки вне VS: Fast
Какие кажется, указывает, что я неправильно определил проблему. Это не значит, что профилировщик улучшает ngs, это то, что отладка в среде IDE убивает его ... Я изначально не подозревал, что отладка была проблемой, поскольку я начал развиваться на машине Win7, у которой не было проблем, а затем переключилось на машину XP и предположил, что изменение скорости было вызвано аппаратные различия. Только после того, как я начал профилировать, я видел, как быстро это получилось ...
То же самое происходит, когда вы просто запускаете приложение с визуальной студией? У него все еще есть такая же задержка. – kyndigs
@kyndigs - Хороший вопрос - я отредактировал Q, чтобы дать подробный ответ – Basic
Думаю, вы решили своего собственного человека проблемы. Отладчик убивает производительность. Что ОК ИМО, так как это не для тестирования производительности. Я действительно рад вашим подробным результатам там, так как он показывает «не плохой удар» для профилировщика, что очень полезно. –