Mavzu: linq so’rovlar. Reja: I. Kirish II. Asosiy qism Parallel linq. Parallel linq ga kirish. AsParallel usuli. AsOrdered usuli


Download 48.13 Kb.
bet2/6
Sana18.06.2023
Hajmi48.13 Kb.
#1590764
1   2   3   4   5   6
Bog'liq
18-Mavzu- LINQ so’rovlar

AsParallel usuli. AsParallel() usuli so'rovni ma'lumotlar manbasiga parallellashtirish imkonini beradi. U massivlar va to'plamlar uchun LINQ kengaytmasi usuli sifatida amalga oshiriladi. Ushbu usul chaqirilganda ma'lumotlar manbai qismlarga bo'linadi (agar iloji bo'lsa) va har bir qismda operatsiyalar alohida bajariladi.Raqamlarning faktoriallarini topishning eng oddiy misolini ko'rib chiqing:
static void Main(string[] args)
{
int[] numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, };
var factorials = from n in numbers.AsParallel()
select Factorial(n);
foreach (var n in factorials)
Console.WriteLine(n);
Console.ReadLine();
}
static int Factorial(int x)
{
int result = 1;
for (int i = 1; i <= x; i++)
{
result *= i;
}
Console.WriteLine($"{x} sonining faktoriali {result} ga teng.");
return result;
}

Aslida, bu oddiy LINQ so'rovi, ma'lumotlar manbasiga faqat AsParallel usuli qo'llaniladi.Dastur ishining natijasi faktorialni topish uchun ma'lumotlar ketma-ket tanlanmaganligini ko'rsatadi. Ya'ni, dasturning parallellashuvi mavjud edi:





Kengaytma usullaridan foydalangan holda shunga o'xshash operatsiya:
var factorials = numbers.AsParallel().Select(x => Factorial(x));

For All usuli. Faktorialni hisoblash uchun yuqoridagi kod parallellashtirish nuqtai nazaridan yanada optimallashtirilishi mumkin. Xususan, parallel amal natijasini ko'rsatish uchun foreach siklidan foydalaniladi. Ammo undan foydalanish xarajatlarning oshishiga olib keladi - turli xil oqimlarda olingan ma'lumotlarni bitta to'plamga yopishtirish va keyin ularni tsiklda takrorlash kerak. Bu holda, ma'lumotlarni qayta ishlangan oqimda chiqaradigan ForAll() usulidan foydalanish maqbulroq bo'ladi:

Download 48.13 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling