2009-11-02 19 views

Odpowiedz

35

To jest równoległy LINQ. Jest to sposób na równoległe uruchamianie zapytań LINQ w systemach wielordzeniowych/wieloprocesorowych, aby (miejmy nadzieję) je przyspieszyć.

Istnieje dobry artykuł na ten temat w MSDN Magazine.

Aktualne informacje i plany, polecam czytanie artykułów na temat Parallel Programming with .NET Team Blog. Są zespołem wdrażającym równoległe rozszerzenia, w tym PLINQ.

+2

Magazyn MSDN nie zawiera precyzyjnego linku do artykułu, ale blog jest nadal dobry, więc nadal możesz głosować. –

1

Z Wikipedii Parallel Extensions:

Parallel LINQ (PLINQ) jest równoległy silnik wykonanie kwerendy dla LINQ, parallelizing wykonywanie zapytań na obiektach (LINQ to Objects) oraz danych XML (LINQ do XML) . PLINQ jest przeznaczony do ujawniania równoległości danych za pomocą zapytań. Wszelkie obliczenia na obiektach, które zostały zaimplementowane jako zapytania, można zrównoleglić za pomocą PLINQ. Jednak obiekty muszą implementować interfejs IParallelEnumerable, który definiuje sam PLINQ. Wewnętrznie używa TPL do wykonania.

+0

Parallel Extensions = PLINQ. PLINQ to jedna mała część nowych rozszerzeń równoległych dodawanych do platformy .NET 4, ale w żaden sposób nie wszystkie prace PFX. –

+4

@Reed Oczywiście. Miałem link do Wikipedii, która jest trzecim wynikiem zapytania Google o "PLINQ" i zawiera sekcję o równoległym LINQ. To była trywialna odpowiedź na trywialne pytanie. – Greg

10

Jest to biblioteka, która umożliwia wykonanie zwykłej kwerendy LINQ, podzielenie jej na mniejsze zadania i wykonanie każdego pojedynczego zadania na wielu wątkach z wykorzystaniem rdzeni procesorów.

3

Umożliwia dodanie .AsParallel do LINQ w celu wykonania zapytania przy użyciu jak największej liczby procesorów. Zgrabne, ale wciąż musisz trochę wiedzieć o tym, czy twój algorytm jest "równoległy" - to nie jest magia.

Po prostu usuwa potrzebę zarządzania pulą wątków i zarządza synchronizowaniem wyników wracających z każdego wątku - zwykle bez biblioteki rozszerzeń równoległych trzeba to zrobić ręcznie.

+0

Należy pamiętać, że nie wszystko ma interfejs .AsParallel dla LINQ, dobrym przykładem jest DataTable. – Si8

15

PLINQ to LINQ wykonywane równolegle, czyli przy użyciu tak dużej mocy obliczeniowej, jak w bieżącym komputerze.

Jeśli masz komputer z 2 rdzeniami, na przykład procesorem dwurdzeniowym, operatory z zintegrowanymi językami wykonają pracę równolegle, używając obu rdzeni.

Używając "tylko" LINQ, nie uzyska się tak dużej wydajności, ponieważ standardowe operatory zintegrowanego kwerendy językowej nie będą zrównoleglone względem kodu. Oznacza to, że twój kod będzie działał w sposób seryjny, nie wykorzystując wszystkich dostępnych rdzeni procesora.

Istnieje wiele operatorów zapytań PLINQ zdolnych do wykonywania kodu przy użyciu dobrze znanych wzorców równoległych.

Spójrz na moim blogu, w którym pokażę prędkość aż pojawi się po uruchomieniu prostej kwerendy LINQ równolegle używając AsParallel metodę rozszerzenia:

Parallel LINQ (PLINQ) with Visual Studio 2010/2012 - Perf testing

Jeśli chcesz zagłębić stosując PLINQ, radzę przeczytać:

Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4

Powiązane problemy