'Восхитительно параллельные' запросы PLINQ - PullRequest
2 голосов
/ 02 февраля 2012

Этот пример взят из статьи PLINQ MSDN:

http://msdn.microsoft.com/en-us/library/dd997399.aspx

var queryA = from num in numberList.AsParallel()
         select ExpensiveFunction(num); //good for PLINQ

var queryB = from num in numberList.AsParallel()
         where num % 2 > 0
         select num; //not as good for PLINQ

Почему queryB не считается «восхитительно параллельным»?Кажется, что это было бы идеально для разделения на несколько потоков, потому что каждый из элементов в списке не зависит от других.

1 Ответ

4 голосов
/ 02 февраля 2012

Причина, по которой второй пример не является хорошим кандидатом для паралеллизации, заключается просто в том, что накладные расходы, возникающие при разделении работы на несколько потоков, как правило, высоки, поэтому работа, выполняемая параллельно, должна будет перевесить эту нагрузку.Недорогая операция не является хорошим кандидатом.

...