LINQ so’rovlarining kechiktirilgan bajarilishi
LINQ kechiktirilgan ijrodan foydalanganligi sababli, yangi ma'lumotlar bo'lguncha ketma-ketlik hosil bo'lmaydi mavjud. Bu shuni anglatadiki, oldingi tsikl so'rovni bajarishga majbur qiladi va natijalarni ko'rsatadi.
int [] ketma-ketlik = Sanoqli. Range (1, 10) .ToArray ();
var kvadratchalar = ketma-ketlik. Tanlang (x => x * x);
oldindan belgilash (kvadratlar ichida kvadrat)
{
Konsol .Write (kvadrat "" ");
}
Console.ReadLine ();
Natija: 1 4 9 16 25 36 49 64 81 100
LINQ interfeysni amalga oshiradigan ketma-ketliklar bilan ishlaydi Sanab bo'lmaydigan . PLINQ-dan foydalanishni xohlayotganimizni ko'rsatish uchun biz statik AsParallel usuldan foydalanishi kerak. Bu usul IEnumerable kengaytmasi, shuning uchun uni har qanday narsaga qo'llash mumkin. LINQ operatsiyalarini qo'llab-quvvatlaydigan ketma-ketlik. U ob'ektni qaytaradi
ParallelQuery turini kiriting. Agar parallel ketma-ketlik bo'lsa ma'lumotlar, siz uni LINQ operatsiyalari uchun manba sifatida foydalanishingiz mumkin, har qanday boshqa ketma-ketlikda bo'lgani kabi. PLINQ bu kabi ma'lumotlarni ajratadi samarali parallel ishlov berishni ta'minlash usuli. So'rovni parallellashtirish uchun qo'ng'iroqni ko'rsatilganidek AsParallel qo'shing quyida:
var kvadratchalar = ketma-ketlik.AsParallel (). Tanlang (x => x * x);
Natija: 100 1 25 36 49 64 81 4 9 16
Siz PLINQ so'rovi natijalari to'g'ri ekanligini payqagan bo'lishingiz mumkin, ammo ular ketma-ketlikni ishlatishdan ko'ra boshqa tartibda paydo bo'ldi LINQ versiyasi. Bu parallel ravishda ishlaydigan so'rovlarning qo'shimcha mahsuloti. LINQ Ba'zi hollarda natijalarni buyurtma qilish muhim emas, ayniqsa, agar ma'lumotlar keyinchalik saralangan bo'lsa standart buyurtma operatori yordamida OrderBy yoki ba'zilari imperativ usul. Boshqa hollarda, asl nusxani buzish buyurtma halokatli bo'lishi mumkin. Bunday vaziyatlarda sizga kerak kirish tartibiga muvofiq natijalar tartibini saqlash. Plinq parallel ravishda ma'lumotlar manbai tartibini saqlashni qo'llab-quvvatlaydi AsOrdered usuli yordamida. Ushbu usul faqat ishlatilishi kerak. natijalar tartibini saqlash kerak bo'lganda, bu mumkin
so'rovlaringizni sezilarli darajada pasaytiradi. Quyidagi so'rov AsParallel-dan keyin AsOrdered usulidan foydalanadi natijalar tartibini ta'minlash.
var kvadratchalar = ketma-ketlik.
AsParallel (). AsOrdered () ni tanlang (x => x * x);
Natija: 1 4 9 16 25 36 49 64 81 100
LINQ yordamida ketma-ket so'rovni bajarganingizda, har qanday qayta ishlangan ma'lumotlar elementi istisnoga olib kelishi mumkin. Qachon istisno bekor qilinadi, so'rov darhol bajarilishini to'xtatadi. Bilan PLINQ bir vaqtning o'zida bir nechta operatsiyalarni bajarishi mumkin.
Do'stlaringiz bilan baham: |