Запуск VS Profiler повышает производительность приложения в 20 раз?

РЕДАКТИРОВАТЬ 1
Я вовсе не исключаю, что это может быть вызвано каким-то очень простым побочным эффектом использования Профилировщика (некоторая ошибочная настройка в моем «обычном» проекте)

Я хотел улучшить время вычислений в своем приложении, поэтому я решил пройти через тщательный анализ профилей. Итак я только что запустил профилирование распределения памяти .Net для анализа своего приложения.
Я был совершенно ошеломлен, увидев, что вычисления стали в 20 раз быстрее !

Приложение состоит из чтения данных из двоичных файлов с помощью BackgroundWorkers, их обработки,
и сохранения результатов в базе данных MSSQL. Каждый раунд обычно занимает 20 секунд, а при профилировании - всего 1 секунду. Я проверил и убедился, что результаты согласованы в обоих случаях.

Друг, экспериментировавший с .Net, сказал мне, что профилировщик оптимизирует многопоточность и «каким-то образом» находит свой путь через блокировки потоков и узкие места, но я просто не могу в это поверить.

Итак, мои вопросы:

  1. ЧТО ИМЕННО ПРОИСХОДИТ, КАК и ПОЧЕМУ?
  2. Как заставить мой код вести себя так изначально?

ИЗМЕНИТЬ 2
Я ЗНАЮ это звучит безумно и невероятно. Тот же код работает очень быстро при запуске профилировщиком. Я использую ОДИНАКОВЫЕ тестовые данные и смотрю ОДИНАКОВЫЕ результаты вычислений. Я не могу выдать простой воспроизводящий проект, так как это относительно большой фреймворк. Я использую Visual Studio 2010 Profiler.

Я дам как можно больше подробностей о потоке и обязательно опубликую подсказку, как только найду ее.

Обычные ЖУРНАЛЫ ВЫПОЛНЕНИЯ:
23.03.2011 18:04:34 | 180434.621 | НАБОР ДЛЯ ИМИТАЦИИ [5] - [1] - [5 ПК-1 0 [НАБОР 1/48]
23.03.2011 18:05:01 | 180501.271 | ВРЕМЯ ОБРАБОТКИ: 00: 00: 26.6515244
и т. Д.

Профилировщик Run LOGS:
24.03.2011 11:38:15 | 113815.592 | НАБОР ДЛЯ ИМИТАЦИИ [5] - [1] - [5 ПК-1 0 [НАБОР 1/48]
24.03.2011 11:38:17 | 113817.350 | ВРЕМЯ ОБРАБОТКИ: 00: 00: 01.7581005

и т. Д.

РЕДАКТИРОВАНИЕ 3: Подсказка
Хорошо, хорошо, ОК Мой ПЛОХО (Я предупреждал о такой возможности при редактировании 1, так как это было слишком невероятно. Извините) @Watts предложил проверить, был ли я в режиме отладки или выпуска. Что я уже сделал. НО @SnowBear указал, что есть две разные вещи: запускать отладочную версию программного обеспечения и запускать программное обеспечение под отладчиком. Я убедился, что активная конфигурация была RELEASE как в Build And Execution, так и в VS2010. Однако, поскольку я просто сходил с ума, я решил запустить приложение прямо из exe-файла в bin / release. И вуаля ... процессы занимали 1 секунду каждый. Запуск профилировщика выводит вас из режима отладки (независимо от того, находитесь ли вы в режиме выпуска или отладки) вот что привело меня в замешательство.
Спасибо, все дело закрыто.

7
задан Josh M. 24 March 2011 в 21:12
поделиться