Подтвердить что ты не робот

Точно, что такое PLINQ?

PLINQ был добавлен в .NET 4.0 Framework как расширение для LINQ.

  • Что это такое?
  • Какие проблемы он разрешает?
  • Когда это подходит, а когда нет?
4b9b3361

Ответ 1

Это параллельный LINQ. Это способ запуска запросов LINQ параллельно в многоядерных/многопроцессорных системах, чтобы (надеюсь) ускорить их.

В статье MSDN Magazine есть хорошая статья.

Для текущих подробностей и планов я рекомендую читать статьи на Параллельное программирование с .NET Team Blog. Это команда, реализующая параллельные расширения, включая PLINQ.

Ответ 2

PLINQ - это LINQ, выполняемый в Parallel, то есть с использованием большей вычислительной мощности, чем у вашего текущего компьютера.

Если у вас есть компьютер с двумя ядрами, например двухъядерный процессор, вы получите операторы Language Integrated Query, работающие параллельно, используя оба ядра.

Используя "только" LINQ, вы не получите такой же производительности, потому что стандартные операторы Language Integrated Query не будут распараллелить ваш код. Это означает, что ваш код будет запускаться серийно, не используя все доступные процессорные ядра.

Существует множество операторов запросов PLINQ, способных выполнять ваш код с использованием известных параллельных шаблонов.

Взгляните на мое сообщение в блоге, в котором я показываю скорость, которую вы получаете при запуске простого запроса LINQ в Parallel с использованием метода расширения AsParallel:

Параллельный LINQ (PLINQ) с Visual Studio 2010/2012 - Perf-тестирование

Если вы хотите углубиться в PLINQ, я советую вам прочитать:

Шаблоны для параллельного программирования: понимание и применение параллельных шаблонов в .NET Framework 4

Ответ 3

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

Ответ 4

Он позволяет добавлять .AsParallel к вашему LINQ, чтобы попытаться выполнить запрос, используя как можно больше процессоров. Аккуратно, но вам все равно нужно немного узнать, является ли ваш алгоритм "параллелизуемым" - это не волшебство.

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

Ответ 5

Из Википедии Параллельные расширения:

Параллельный LINQ (PLINQ) - это механизм параллельного выполнения запросов для LINQ, параллельный выполнение запросов по объектам (LINQ to Objects) и XML-данные (LINQ to XML). PLINQ предназначен для отображения данных parallelism с помощью запросов. PLINQ можно распараллелить любые вычисления по объектам, которые были реализованы как запросы. Однако для объектов необходимо реализовать интерфейс IParallelEnumerable, который определяется самим PLINQ. Внутри он использует TPL для выполнения.