Я изучаю, сколько времени требуется для выполнения конкретной операции. Операция выглядит следующим образом:
Parallel.ForEach(items, item => SaveScheme(item));
Метод SaveScheme
работает с базой данных: выполняет некоторые запросы и работает с информацией. Количество элементов в коллекции items
может быть достаточно большим.
Когда я запускаю эту операцию, она занимает около 20-40 секунд. Но когда я запускаю его с включенным профилированием, это занимает всего 3 секунды!
Я не нашел никакой информации об этой проблеме. Мое единственное предположение: профилирование Parallel.ForEach
создает больше потоков, чем без него, но я не знаю точно, и даже если это правда, я не знаю, что с ним делать.
Итак, почему это происходит и как я могу архивировать эту производительность при запуске приложения без профилирования?
UPD. Parallel
не имеет ничего общего с этим: я протестировал с простым foreach
, а операция все еще завершена за 3 секунды!