Мне любопытно на предмет рабочих характеристик Параллели. ForEach. Учитывая любую допустимую конструкцию в Параллели. Цикл foreach, всегда это предпочтительный для использования Параллели. ForEach по циклу foreach? Я конкретно задаюсь вопросом об издержках вызова библиотеки Parallel Tasks по маленьким наборам или другим пограничным случаям, где цикл foreach мог бы быть быстрее. Я знаю, что библиотека довольно умна о том, когда/как метать икру, потоки... являются там случаями, где это лучше просто оставить код в цикле foreach или является издержками для вызова Параллельных Задач обычно negligble, поэтому если Вы можете, необходимо использовать Параллель. ForEach?
Этот вопрос подобен и предоставляет хорошую информацию о функциональном различии, но действительно не говорит с производительностью. Обратите внимание, что я игнорирую совместимость к.NET <4 как причина пребывания с foreach:
C#: Какое-либо преимущество
Это не всегда предпочтительнее. Для тел быстрого цикла Parallel.ForEach может снизить производительность. Одно из указаний, перечисленных в Руководстве по программированию параллельного программирования , состоит в том, чтобы измерить как до, так и после распараллеливания.
Другие полезные статьи были опубликованы группой параллельных вычислений .
Я бы сказал, что всегда следует придерживаться простого (например, обычного foreach) и реализовывать более сложные вещи (например, Parallel ForEach) только тогда, когда у вас есть измеримые требования к выполнению так. Поэтому, если вы можете доказать, что в конкретном случае нормальный foreach не так быстро, как вам нужно, и вы можете доказать для этого конкретного экземпляра, что Parallel foreach решит вашу проблему, тогда используйте Parallel.
В противном случае просто.