HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
Parallel.ForEach Nedir?
C#'ta özellikle listeler ve dizilerde işlem yapacağımız zaman sıklıkla kullandığımız foreach döngüsünün çalışma mantığına benzer olan bir de Parallel.ForEach döngüsü vardır. Klasik foreach'ten farkı, dizi elemanlarını sıra ile dönmek yerine tüm elemanları paralel task'lar oluşturup (CPU çekirdekleri uygun olduğu kadar) aynı anda işlenmesini sağlar.Parallel.ForEach Nasıl Kullanılır?
System.Threading.Tasks namespace'i kullanacağımız zaman kodumuza referans olarak eklmemiz gerekir.Döngüye uygun, tüm veri tiplerinde kullanabiliriz.
Kod:
var numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Parallel.ForEach(numbers, num =>
{
Console.WriteLine(num);
});
Kodu her çalıştırdığınızda farklı ekrana yazdırma sırası görürsünüz.
Ne zaman Parallel.ForEach Kullanmalıyız?
1. Bu döngünün sihirli bir kod satırı olduğunu kesinlikle düşünmemelisiniz. Çünkü klasik foreach'e göre aşırı yavaş kaldığı durumlar da olabilmekte. O koddaki senaryonuza göre dikkatli bir şekilde kullanmalısınız. Örneğin yukarıdaki gibi az elemanlı sabit bir dizinin elemanlarını ekrana yazdırmak için kullanılması pek tavsiye edilmez. Sadece kod syntax'ını basit şekilde anlatmak için bu şekilde gösterdim.2. Büyük veri(Big Data) ile işlemler yapıyarsanız, binlik, milyonluk listelerde çalışmanız gerekiyorsa tercih edebilirsiniz.
3. Liste veya diz içindeki kayıtlarının sırasının bir önemi yoksa, her bir kayıt birbirinden bağımsız işlenebilirse tercih edebilirsiniz. (1 ve 2. maddeki koşulları da gözeterek)
4.Ortak paylaşılan bir veriye erişim yoksa tercih edilebilir. Eğer döngü içerisinde ortak bir sınıfa,db'yi vs kullanıyorsanız aynı anda bu veriye erişmeye çalışmak sistemde çakışmalara yol açabilir veya bu kadar isteği kaldırmayabilir.
5. Döngü içerisinde yeni obje ve büyük değişkenler oluşturmuyorsanız tercih edilebilir. Diğer türlü aynı anda bu objeleri oluşturmak bellekte ani ve yüksek bir alan ihtiyacı oluşturacağı için sistem belleği bu yükü kaldıramayabilir.
6. Döngü içindeki elemanların işlenme sıralarının bir önemi yoksa tercih edilebilir. (önceki maddeleri de dikkate alarak)
Sonuç olarak, Parallel.ForEach, büyük döngülerde kodunuzu hızlandırabilecek önemli bir alternatif olabilir, ancak yanlış kullanıldığında kodunuzu yavaşlatabilir ve hatta sistemde kitlenmelere yol açabilir. Kodunuzdaki durumu değerlendirip bilinçli bir şekilde kullanıldığında ciddi performans artışları sağlayabilir. Bu nedenle, ihtiyacınıza ve projenizin gereksinimlerine göre foreach veya Parallel.ForEach'i tercih etmelisiniz.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 6
- Görüntüleme
- 213
- Cevaplar
- 1
- Görüntüleme
- 13
- Çözüldü
- Cevaplar
- 4
- Görüntüleme
- 219
Altın Konu
USB-C Şarjı Nedir?
- Cevaplar
- 10
- Görüntüleme
- 247
- Cevaplar
- 1
- Görüntüleme
- 12
