İçeriğe geç

Kısa Bilgi 9 – Hangi Durumda PLINQ Kullanmalı

PLINQ(Parallel Linq) kullanarak veritabanı sorgularımızda bariz şekilde performans sağlamak mümkün olabilmektedir. Fakat hangi durumlarda LINQ veya PLINQ kullanacağımızı bilmek önemlidir. Aksi taktirde performans sağlamanın tersine performans kaybına sebep olunabilinir.

Özellikle içerisinde çok fazla veri barındıran tablolardan veriye erişim yapacağımızda PLINQ etkili bir performans sağlamakta. Örneğin aşağıda buna ilişkin bir testi inceleyebiliriz.

Bunun yanında senaryo gereği 0’dan 10.000’e kadar olan sayılar içinden 3’e bölünenlerin sayısını veren kodu LINQ ve PLINQ ile inceleyecek olursak aşağıdaki gibi sonuç ortaya çıkacaktır.

            IEnumerable<int> @params = Enumerable.Range(0, 10000);
            Stopwatch stopWatch = new Stopwatch();
            int count;

            stopWatch.Start();
            count = @params.Where(p => p % 3 == 0).Count();
            stopWatch.Stop();

            Console.WriteLine(stopWatch.Elapsed.TotalMilliseconds);

            stopWatch.Restart();
            
            stopWatch.Start();
            count = @params.Where(p => p % 3 == 0).AsParallel().Count();
            stopWatch.Stop();

            Console.WriteLine(stopWatch.Elapsed.TotalMilliseconds);
            Console.ReadLine();

Bunun sebebi basittir. Koşul belirten sıralama tarzı işlemlerde PLINQ ağır kalır. Çünkü PLINQ için arkaplanda hazırlanmakta olan(örneğin thread sayısı belirleme) işlemlerin kendisi zaman almaktadır. Bu sebeple bu tarz işlemlerde performans sağlamaz.

Tarih:Kısa Bilgi

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.