Parallel.Foreach так же быстро / медленно, как обычно ForEach

ОБНОВЛЕНИЕ: я использовал потоки, чтобы разделить цикл по количеству ядер (8 в моем случае), и полный цикл прошел менее чем за 1 секунду . Так что проблема не в том, что операция не быстрее с потоками. Почему в этом случае не удалось выполнить расширение Parralel?

Всем привет. Я хочу преобразовать свой 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 не сэкономит времени.

13
задан Paccc 26 December 2012 в 23:11
поделиться