16-Mavzu: linq so’rovlar. Reja: Parallel linq. Parallel linq ga kirish. AsParallel usuli. AsOrdered usuli
Download 152.19 Kb. Pdf ko'rish
|
16-Mavzu LINQ so’rovlar (1)
- Bu sahifa navigatsiya:
- For All usuli.
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: int[] numbers = new int[] { -2, -1, 0, 1, 2, 4, 3, 5, 6, 7, 8, }; (from n in numbers.AsParallel() where n >0 select Factorial(n)) .ForAll(Console.WriteLine); ForAll() usuli parametr sifatida Action delegatini oladi, bu bajariladigan amalni bildiradi. Download 152.19 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling