2010-11-09 3 views
4

[См редактировать @ внизу - проблема не может быть то, что я изначально думал]различия 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 и предположил, что изменение скорости было вызвано аппаратные различия. Только после того, как я начал профилировать, я видел, как быстро это получилось ...

+1

То же самое происходит, когда вы просто запускаете приложение с визуальной студией? У него все еще есть такая же задержка. – kyndigs

+1

@kyndigs - Хороший вопрос - я отредактировал Q, чтобы дать подробный ответ – Basic

+0

Думаю, вы решили своего собственного человека проблемы. Отладчик убивает производительность. Что ОК ИМО, так как это не для тестирования производительности. Я действительно рад вашим подробным результатам там, так как он показывает «не плохой удар» для профилировщика, что очень полезно. –

ответ

2

Это общая оценка, но визуальная студия работает с правами администратора, но ваша программа не является? В основном, вы получаете диалоговое окно продвижения UAC при запуске визуальной студии, и, таким образом, если вы пропустите через отладчик/профайлер, вы можете увеличить максимальный объем процессора, но процесс «пользовательского пространства» может не разрешаться? Связанный с этим вопрос заключается в том, чтобы спросить, получаете ли вы улучшение производительности при работе с отладчиком (не профилировщиком) или нет.

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

+0

Спасибо за ответ. Запуск на XP для целей этого теста (я добавлю это в Q), поэтому нет UAC. Я не рядом с машиной, поэтому не могу тестировать с/без отладчика - сегодня вечером вернусь к вам. Хорошая идея для начала, спасибо. – Basic

+0

Комментарий UAC не кажется правильным, но вы получили бит отладчика точно. благодаря – Basic

Смежные вопросы