Что такое PLINQ?

Ребята, что такое PLINQ и чем это отличается от простого LINQ?

По сути это тот же самый LINQ, только из параллельного программирования.

Основной задачей PLINQ является ускорение обработки запросов LINQ to Objects на компьютерах с более чем одним ядром в процессоре. По сути задача состоит в выполнении запросов в параллельном режиме.

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

1. Разделить один поток на несколько других потоков.

2. Распределить всю работу на все потоки.

3. Объеденить результаты всех потоков после обработки запроса.

Эти 3 фактора значительно повышают накладные расходы, которые как результат повышают вычислительную стоимость параллелизации. Так что , как видим, не всегда с помощью параллельности можно добиться ускорения работы.

Рекоммендую Вам прочитать статью из докумментации Майкрософт по теме PLINQ и факторы, которые необходимо учитывать при создании параллельной обработки запроса, для достижения максимальной продуктивности и минимальных затрат на параллелизм.