В моем приложении я выполняю от нескольких десятков до нескольких сотен действий параллельно (без возвращаемого значения для действий).
Какой подход был бы наиболее оптимальным:
-
Использование
Task.Factory.StartNew
в цикле foreach, итерации по массивуAction
(Action[]
)Task.Factory.StartNew(() => someAction());
-
Использование класса
Parallel
, гдеactions
- массивAction
(Action[]
)Parallel.Invoke(actions);
Являются ли эти два подхода эквивалентными? Существуют ли какие-либо последствия для производительности?
ИЗМЕНИТЬ
Я выполнил некоторые тесты производительности, и на моей машине (2 процессора 2 ядра каждый) результаты, похоже, очень похожи. Я не уверен, как это будет выглядеть на других машинах, таких как 1 процессор. Также я не уверен (не знаю, как проверить его очень точный способ), что такое потребление памяти.