Paralel sorgu nedir?
PLINQ sorgusunun birçok yönü, paralel olmayan LINQ to Object sorgularına benzer. Sıralı LINQ sorguları gibi, PLINQ sorguları da herhangi bir bellek içi IEnumerable veya IEnumerable<T> veri kaynağında işlem yapar ve yürütmeyi erteler; yani sorgu listelenene kadar yürütülmeye başlamazlar. Ana fark, PLINQ'nin sisteminizdeki tüm işlemcilerden en iyi şekilde yararlanmaya çalışması. Yöntem, veri kaynağını parçalara ayırmak ve ardından ayrı bir işçi iş parçacığında her parça için birden fazla işlemci üzerinde paralel sorgular yapmaktır. Birçok durumda, paralel yürütme sorguların önemli ölçüde daha hızlı çalışmasını sağlar.
Paralel yürütme ile PLINQ, genellikle AsParallel sorgu işlemlerini veri kaynağına eklemek için eski kodlara kıyasla performansı önemli ölçüde artırabilir. Ancak, paralellik kendi karmaşıklığını getirebilir, bu yüzden PLINQ'da tüm sorgu işlemleri daha hızlı çalışmaz. Aslında, paralellik bazı soruları yavaşlatıyor. Bu nedenle, sıralama gibi konuların paralel sorguları nasıl etkileyeceğini anlamak önemlidir. Daha fazla bilgi için bkz. PLINQ'da ivmeni anlamak.
Basit bir örnek
Koleksiyondaki 10.000 veri parçası için kod şöyledir:
PLINQ tarafından kullanılan diğer özellikler
1. AsSequential kullanarak, süreçte paralel sorgular kullanmak istemiyorsanız, bu özelliği kullanarak ardışık sorgulara geri dönebilirsiniz.
2. AsOrdered kullanıldığında, PLINQ paralel çalıştığı için sonuçlar sırayla olmayabilir ve AsOrdered yöntemi ekleyerek sorgulanabilir.
3. Paralellik Derecesi ile kullanın, bu özellik bilgisayarda paralel CUP sayısını ayarlayabilir.
Sahne notu
Birçok durumda, sorgular paralelleştirilebilir, ancak paralel sorgu kurmanın yükü performans kazanımlarından daha ağır basabilir.Eğer sorgu çok sayıda hesaplama yapmıyorsa veya veri kaynağı küçükse, PLINQ sorgusu ardışık LINQ'dan Nesnelere sorgudan daha yavaş olabilir。 Visual Studio Team Server'daki Paralel Performans Analizörü'nü kullanarak çeşitli sorguların performansını karşılaştırabilir, işlem darboğazlarını bulabilir ve sorguların paralel mi yoksa ardışık mı çalıştığını belirleyebilirsiniz.
Referans:Bağlantı girişi görünür.
|