РЕДАКТИРОВАТЬ 1
Я вовсе не исключаю, что это может быть вызвано каким-то очень простым побочным эффектом использования Профилировщика (некоторая ошибочная настройка в моем «обычном» проекте)
Я хотел улучшить время вычислений в своем приложении, поэтому я решил пройти через тщательный анализ профилей.
Итак я только что запустил профилирование распределения памяти .Net для анализа своего приложения.
Я был совершенно ошеломлен, увидев, что вычисления стали в 20 раз быстрее !
Приложение состоит из чтения данных из двоичных файлов с помощью BackgroundWorkers, их обработки,
и сохранения результатов в базе данных MSSQL. Каждый раунд обычно занимает 20 секунд, а при профилировании - всего 1 секунду. Я проверил и убедился, что результаты согласованы в обоих случаях.
Друг, экспериментировавший с .Net, сказал мне, что профилировщик оптимизирует многопоточность и «каким-то образом» находит свой путь через блокировки потоков и узкие места, но я просто не могу в это поверить.
Итак, мои вопросы:
ИЗМЕНИТЬ 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 секунду каждый.
Запуск профилировщика выводит вас из режима отладки (независимо от того, находитесь ли вы в режиме выпуска или отладки)
вот что привело меня в замешательство.
Спасибо, все дело закрыто.