PLINQ C#

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы поговорили про класс Parallel в C#. В данной статье я бы хотел рассказать про PLINQ в C#. PLINQ — это параллельное выполнение LINQ-запроса. Когда мы указываем источник, для которого необходимо выполнить такой запрос, то у данного источника вызываем метод "AsParallel()". На этом можно и закончить рассказ про PLINQ.
Отмечу, что не все части таких запросов можно выполнять параллельно: проверять условия ("where") можно, а выполнять агрегатные функции ("min()", "max()", "count()") — нет. Также нельзя параллельно выполнять сортировку, группировку. Если имеется многоядерный процессор, и источник содержит большое количество объектов, то мы получим прирост производительности.
Хочется также отметить, что ни любой алгоритм можно распараллелить и, в первую очередь, нужно подумать можно ли выполнять определенные условия параллельно, не связаны ли элементы, которые мы проверяем, как-то между собой.
Давайте напишем пример, чтобы понять, как это работает:
using System; using System.Text; using System.Threading.Tasks; using System.Collections.Generic; using System.Linq; namespace TestApplicationForStudy { public class Room { public double square; public bool hasFurniture; public Room(double sq, bool hasFur) { this.square = sq; this.hasFurniture = hasFur; } } class Program { static void Main(string[] args) { // Создадим коллекцию из 4 комнат List<Room> myRooms = new List<Room>(); myRooms.Add(new Room(25, true)); myRooms.Add(new Room(30, true)); myRooms.Add(new Room(16, true)); myRooms.Add(new Room(10, true)); // Выполним PLINQ-запрос var result = from room in myRooms.AsParallel() // Параллельно выполняем условия where room.square > 17 // сортируем в обратном порядке orderby room.square descending select room; foreach (Room room in result) { Console.WriteLine("Площадь комнаты = " + room.square); } Console.ReadLine(); } } }
В данной небольшой статье вы узнали про использование PLINQ в C#.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.