Parallel.ForEach Slower than ForEach

Вот код:

using (var context = new AventureWorksDataContext())
{
    IEnumerable<Customer> _customerQuery = from c in context.Customers
                                           where c.FirstName.StartsWith("A")
                                           select c;

    var watch = new Stopwatch();
    watch.Start();

    var result = Parallel.ForEach(_customerQuery, c => Console.WriteLine(c.FirstName));

    watch.Stop();
    Debug.WriteLine(watch.ElapsedMilliseconds);

    watch = new Stopwatch();
    watch.Start();

    foreach (var customer in _customerQuery)
    {
        Console.WriteLine(customer.FirstName);
    }

    watch.Stop();
    Debug.WriteLine(watch.ElapsedMilliseconds);
}

Проблема в том, что Parallel.ForEach занимает около 400 мс по сравнению с обычным foreach , что занимает около 40 мсек. Что именно я делаю неправильно и почему это не работает так, как я ожидал?

30
задан Venkat 8 October 2018 в 10:38
поделиться