ОБНОВЛЕНИЕ: Я использовал Threading, чтобы разделить цикл на количество ядер (8 в моем случае), и полный цикл прошел менее чем за 1 секунду. Так что проблема не в том, что операция не быстрее с потоками. Почему в этом случае произошел сбой Parralel Extension?
Привет всем. Я хочу конвертировать мой ForEach с Parrallel.Foreach.
Проблема в том, что парралелизация не приносит мне никакой пользы.
Оригинал:
foreach (Entities.Buchung buchung in buchungen) {
Int32 categoryID = manager.GetCategoryID(new Regelengine.Booking(buchung)); // Average 4ms
buchung.Category = categoryID.ToString();
}
Параллельное:
System.Threading.Tasks.Parallel.ForEach(buchungen, buchung => {
Int32 categoryID = manager.GetCategoryID(new Regelengine.Booking(buchung));
buchung.Category = categoryID.ToString();
});
Результаты:
---------------------------
Stopwatched Results for 1550 entries in the List:
---------------------------
Parallel.Foreach 00:00:07.6599066
Average Foreach: 00:00:07.9791303
Может быть, проблема в том, что фактическое действие в цикле настолько короткое? Но никто не может сказать мне, что распараллеливание 1550 операций на Intel I7 не сэкономит время.