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