2009-11-02 29 views

cevap

35

Bu Paralel LINQ olduğunu. LINQ sorgularını, çok çekirdekli/çok işlemcili sistemlerde paralel olarak çalıştırmak, onları hızlandırmak (umarım) için bir yoldur.

MSDN Magazine'da bunun hakkında güzel bir makale var. Geçerli detayları ve planları için

, ben Parallel Programming with .NET Team Blog okuma makaleler önerilir. PLINQ dahil olmak üzere paralel uzantıları uygulayan ekiplerdir.

+2

MSDN Magazine bir makaleye derinlemesine bağlantı vermiyor, ancak blog hala iyi, bu yüzden hala benim oyumu aldınız. –

1

: (XML LINQ)

Paralel LINQ (PLINQ) (Objects LINQ) nesneler ve XML verilerini sorgular yürütülmesini koşutlama LINQ için eşzamanlı sorgu yürütme motorudur . PLINQ, sorguların kullanımıyla veri paralelliğini açığa çıkarmak için tasarlanmıştır. Sorgu olarak uygulanan nesneler üzerinde herhangi bir hesaplama PLINQ tarafından paralelleştirilebilir. Ancak, nesnelerin, PLINQ'nin kendisi tarafından tanımlanan IParallelEnumerable arabirimini uygulaması gerekir. Dahili olarak yürütme için TPL kullanır.

+0

Paralel Uzantıları = PLINQ. PLINQ, NET 4'e eklenen yeni Paralel Eklentilerin küçük bir kısmıdır, ancak herhangi bir şekilde PFX çalışmasının tümünü içermez. –

+4

@Reed Elbette. "PLINQ" için bir Google sorgusunun üçüncü sonucu olan ve Paralel LINQ üzerinde bir bölümü olan Wikipedia'ya bağlanıyordum. Bu önemsiz bir soruya verilen önemsiz bir cevaptı. – Greg

10

Size, normal bir LINQ sorgusu almak daha küçük görevlere bölün ve işlemci çekirdeklerinin yararlanarak çoklu iş parçacığı üzerinde her görevi yürütmek sağlayan bir kütüphanedir.

3

Sorguyu mümkün olduğunca çok sayıda işlemci kullanarak yürütmeyi denemek için LINQ'nize .AsParallel eklemenize izin verir. Düzgün, ama yine de algoritmanızın "paralelleştirilebilir" olup olmadığı hakkında biraz bilgi sahibi olmanız gerekiyor - sihir değil.

Temelde bir iş parçacığı havuzu yönetmek için ihtiyacı ortadan kaldırmakta ve geri her iş parçacığı gelen sonuçlar senkronize yönetir - normalde elle bunu yapmak zorunda kalacak paralel uzantıları kütüphanede olmadan.

+0

Unutmayın, her şeyin LINQ için .AsParallel olması gerekmez, bunun iyi bir örneği DataTable'dır. – Si8

15

PLINQ, LINQ uygulamasında Paralel olarak yürütüldü, yani geçerli bilgisayarınızda sahip olduğunuz kadar işlem gücü kullanıyor.

bir çift çekirdekli işlemci gibi 2 çekirdekli bir bilgisayarınız varsa size Dili alırsınız Entegre Sorgu operatörleri hem çekirdeği kullanarak paralel olarak iş yapmak.

"Yalnızca" LINQ kullanarak, standart Dil Entegre Sorgu operatörleri kodunuzu paralelleştirmeyeceği için çok fazla performans elde edemezsiniz. Bu, kodunuzun tüm kullanılabilir işlemci çekirdeğinizden yararlanmayan seri bir şekilde çalışacağı anlamına gelir.

Kodunuzu iyi bilinen paralel kalıpları kullanarak çalıştırabilen birçok PLINQ sorgu operatörü vardır.

Sana AsParallel uzantısı yöntemini kullanarak Paralel basit LINQ sorgusu çalıştırdığınızda alacağınız hızını göstermek hangi bloguma yazı bir göz atın: Eğer derin gitmek isterseniz

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

PLINQ kullanarak, ben okumak tavsiye:

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