Axborot texnologiyalari asrida dasturiy ta’minot o’rni beqiyos. Kundalik davomida foydalanadigan texnologiyalarimiz: kompyuter, planshet, uyalitelefon (smartfon) va h k. lar dasturiy ta’minot asosida ishlaydi


I BOB. NAZARIY QISM 1.1 Parallel Linq metodi



Download 30,73 Kb.
bet2/4
Sana28.09.2021
Hajmi30,73 Kb.
#187842
1   2   3   4
Bog'liq
Kirish

I BOB. NAZARIY QISM

1.1 Parallel Linq metodi




LINQ so’zining qisqartmasi Language-Integrated Query, ya'ni integratsiyalashgan so'rovlar tili degan ma'noni anglatadi. Ushbu kontsepsiya ma'lumotlar bazasidan ma'lumot olish imkonini beruvchi bir qator vositalarni o'z ichiga oladi. Ma'lumki, ma'lumotlarni olish ko'plab dasturlarning muhim qismidir. Misol uchun, dastur mijozlar ro'yxatidan ma'lumot olishi, mahsulot katalogidagi ma'lumotlarni qidirishi yoki xodim kiritilgan hisobga olish hujjatiga kirishi mumkin. Odatda, bunday ma'lumotlar ilovadan alohida mavjud bo'lgan ma'lumotlar bazasida saqlanadi. Shunday qilib, mahsulot katalogi Relational ma'lumotlar bazasida saqlanishi mumkin. Oldin bunday ma'lumotlar bazasi bilan ishlash uchun tuzilgan so'rovlar (SQL) tilida so'rovlarni shakllantirish kerak edi. Va boshqa ma'lumot manbalariga kirish uchun, masalan, XML formatida alohida yondashuv talab qilindi. Shuning uchun, 3.0 versiyasiga qadar C# da o'xshash so'rovlarni qo'llab-quvvatlash yo'q edi. Biroq, bu holat LINQni qabul qilganidan keyin o'zgardi.

LINQ har qanday LINQ-mos keluvchi ma'lumot manbai uchun so'rovlarni yaratishga imkon beruvchi vositalar hisoblanadi. Shu bilan birga, so'rovlarni shakllantirish uchun ishlatiladigan sintaksis ma'lumot manbai turiga qaramasdan o'zgarishsiz qolmoqda. Bu, xususan, Relational ma'lumotlar bazasiga so'rov yaratish uchun zarur bo'lgan sintaksisning massivda saqlangan ma'lumotlar so'rovining sintaksisidan deyarli farq qilmaydi. Buning uchun endi manbadan ma'lumotlarni olish mexanizmi C# ga nisbatan SQL yoki boshqa tashqi vositalarga murojaat qilishning hojati yo'q. So'rovlarni shakllantirish qobiliyati bundan buyon C# tiliga to'liq integratsiyalangan.

SQL-dan tashqari, LINQ XML fayllari va ma'lumotlar to'plamlari bilan birgalikda ADO.NET Dataset texnologiyalarini ishlatilishi mumkin. Shunday qilib, LINQ vositalari, umuman, ma'lumotlarga bir xil kirishni ta'minlaydi. Va bunday printsipning o'zi juda samarali bo'lsada, LINQning afzalliklari bu bilan

chegaralanmaydi. LINQ ma'lumotlar bazalariga kirishni an'anaviy tashkil qilishdan tashqari, turli xil dasturiy vazifalarni hal qilish uchun boshqacha fikrlashni taklif qiladi. Va nihoyat, LINQ asosida ko'plab yechimlar ishlab chiqilishi mumkin.

C# tilida LINQ aslida tildir. Shuning uchun, linqni ko'rib chiqish mavzusi juda keng va ko'plab vositalar, imkoniyatlar va muqobillarni o'z ichiga oladi. Ushbu mavzuda LINQ vositalarining batafsil tavsifi berilgan bo'lsa-da, bu erda ularning barcha imkoniyatlarini, xususiyatlarini va dasturlarini ko'rib chiqish imkoniyati yo’q. Shu nuqtai nazardan, ushbu bo'lim LINQ ning asosiy elementlariga qaratilgan bo'lib, ulardan foydalanish ko'plab misollarda namoyish etiladi. Va uzoq muddatda LINQ mustaqil ravishda va batafsil o'rganish kerak bo'lgan kichik tizimdir.

Integrated Query (LINQ) deklarativ modelni taqdim etadi,kabi ma'lumotlar ketma-ketligini so'rashga imkon beradi xotiradagi to'plamlar, XML hujjatlari va ma'lumotlar bazasi ma'lumotlari. Xarakter Ko'p so'rovlar ularni osongina parallellashtirish mumkinligini anglatadi. Ko'pchilik so'rovlar har bir element uchun bir xil harakatlar guruhini bajaradi yig'ish. Agar ushbu harakatlarning barchasi mustaqil bo'lsa, nojo'ya ta'sirlarsiz Ko'pincha siz ularni paydo bo'lish tartibidan kelib chiqadigan effektlarni ko'rishingiz mumkin birgalikda ishlash orqali samaradorlikning katta o'sishiga erishish bir nechta protsessor yadrolari o'rtasida.

Ushbu .NET Framework versiyasining 4.0 skriptlarini qo'llab-quvvatlash uchun

Parallel LINQ (PLINQ) bilan tanishtirildi. PLINQ xuddi shu standartni ta'minlaydi

so'rov operatorlari va LINQ kabi so'rovlar ifoda sintaksisi. Asosiyfarq shundaki, dastlabki ma'lumotlarni qismlarga bo'lish mumkin ma'lumotlarning dekompozitsiyasidan foydalanish. Bu kichik ma'lumotlar guruhlari potentsial barcha mavjud CPU yadrolari tomonidan boshqariladi. Plinq bor bu to'g'ridan-to'g'ri almashtirish emasligini anglatuvchi ba'zi cheklovlar LINQ so'rovlar uchun standart parametr bo'lolmaydi. Kalit Cheklovlar soni individualni qayta ishlashning yon ta'siri manba ketma-ketligidagi elementlar, masalan, ishlov berish natijasida Bir elementning boshqasiga bog'liqligi oldindan aytib bo'lmaydigan 90 ga olib kelishi mumkin natijalar. Buning sababi asl elementlar odatda yo'q asl tartibda ishlov beriladi. Ikkinchi cheklov PLINQ xotira ichidagi ma'lumotlarga o'xshashlikni ta'minlaydi to'plamlar yoki oldindan yuklangan XML. LINQ so'rovini parallel ravishda qanday o'zgartirish mumkinligini ko'rsatish ishlov berish, avval siz seriya versiyasini olishingiz kerak. Quyidagi kodda Juda oddiy so'rov ko'rsatilgan. Bu erda biz o'z ichiga olgan qatordan boshlaymiz birdan o'ngacha bo'lgan butun sonlar. Select operatoridan foydalanib, biz loyihalashtiramiz uni asl kvadratlarini o'z ichiga olgan yangi ketma-ketlikka qadriyatlar. 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.

Sintaksis

• ParallelEnumerable.Aggregate (func)

• ParallelEnumerable.Aggregate (, funktsiya) ParallelEnumerable.Aggregate (urug', yangilanishAccumulatorFunc, kombinatAccumulatorsFunc,natija selektor)

•ParallelEnumerable.Aggregate (seedFactory, updateAccumulatorFunc, kombinatKkumulyatorlariFunc, natija selektori)

• ParallelEnumerable.All (predikat)

• ParallelEnumerable.Any ()

• ParallelEnumerable.Any (predikat)

• ParallelEnumerable.AsEnumerable ()

• ParallelEnumerable.AsOrdered ()

• ParallelEnumerable.AsParallel ()

• ParallelEnumerable.AsSequential ()

• ParallelEnumerable.AsUnordered ()

• ParallelEnumerable.Average (selektor)

• ParallelEnumerable.Cast ()

• ParallelEnumerable.Concat (ikkinchi)

•ParallelEnumerable.Contains (value)

•ParallelEnumerable.Contains (qiymat, taqqoslash)

• ParallelEnumerable.Count ()

•ParallelEnumerable.Count (predikat)

• ParallelEnumerable.DefaultIfEmpty ()

• ParallelEnumerable.DefaultIfEmpty (asl qiymati)

• ParallelEnumerable.Distinct ()

• ParallelEnumerable.Distinct (taqqoslagich)

• ParallelEnumerable.ElementAt (indeks)

• ParallelEnumerable.ElementAtOrDefault (indeks)

• ParallelEnumerable.Empty ()

• ParallelEnumerable.Except (ikkinchi)

•ParallelEnumerable.Except (ikkinchi, qiyoslovchi)

• ParallelEnumerable.First ()

• ParallelEnumerable.First (predict)

• ParallelEnumerable.FirstOrDefault ()

• ParallelEnumerable.FirstOrDefault (predikat)

• ParallelEnumerable.ForAll (harakat)

• ParallelEnumerable.GroupBy (keySelector)

• ParallelEnumerable.GroupBy (keySelector, qiyoslovchi)

• ParallelEnumerable.GroupBy (keySelector, elementSelector)

• ParallelEnumerable.GroupBy (keySelector, elementSelector, qiyosiy)

• ParallelEnumerable.GroupBy (keySelector, resultSelector)

ParallelEnumerable.GroupBy (keySelector, resultSelector, qiyosiy)

• ParallelEnumerable.GroupBy (keySelector, elementSelector, policySelector)

• ParallelEnumerable.GroupBy (keySelector, elementSelector, ережalar selektori, taqqoslash)

• ParallelEnumerable.GroupJoin (ichki, tashqiKeySelektor, ichkiKeySelektor, natija to'plami)

•ParallelEnumerable.GroupJoin (ichki, tashqiKeySelektor, ichkiKeySelektor, natija selektori,qiyoslovchi)

• ParallelEnumerable.Intersect (ikkinchi)

•ParallelEnumerable.Intersect (ikkinchi, taqqoslagich)

• ParallelEnumerable.Join (ichki, tashqi klaviatura, ichki klaviatura, natija selektori)

•ParallelEnumerable.Join (ichki, tashqiKeySelektor, ichkiKeySelektor, natija selektori,qiyoslovchi)

• ParallelEnumerable.Last ()

• ParallelEnumerable.Last (predikat)

• ParallelEnumerable.LastOrDefault ()

• ParallelEnumerable.LastOrDefault (predikat)

• ParallelEnumerable.LongCount ()

• ParallelEnumerable.LongCount (predikat)

• ParallelEnumerable.Max ()

• ParallelEnumerable.Max (selektor)

• ParallelEnumerable.Min ()

• ParallelEnumerable.Min (selektor)

• ParallelEnumerable.OfType ()

• ParallelEnumerable.OrderBy (keySelector)

• ParallelEnumerable.OrderBy (keySelector, qiyoslovchi)

• ParallelEnumerable.OrderByDescending (keySelector)

• ParallelEnumerable.OrderByDescending (keySelector, qiyosiy)

•ParallelEnumerable.Range (boshlash, hisoblash)

• ParallelEnumerable.Repeat (element, hisoblash)

• ParallelEnumerable.Reverse ()

• ParallelEnumerable.Selek (tanlang)

• ParallelEnumerable.SelectMany (selektor)

• ParallelEnumerable.SelectMany (collectionSelector, resultSelector)

• ParallelEnumerable.SequenceEqual (ikkinchi)

• ParallelEnumerable.SequenceEqual (ikkinchi, taqqoslovchi)

• ParallelEnumerable.Single ()

• ParallelEnumerable.Single (predikat)

• ParallelEnumerable.SingleOrDefault ()

• ParallelEnumerable.SingleOrDefault (predikat)

• ParallelEnumerable.Skip (hisoblash)

• ParallelEnumerable.SkipWhew (predikat)

• ParallelEnumerable.Sum ()

• ParallelEnumerable.Sum (selektor)

• ParallelEnumerable.Take (hisoblash)

• Parallel ravishda sanab bo'ling.

• ParallelEnumerable.ThenBy (keySelector)

• ParallelEnumerable.ThenBy (keySelector, qiyoslovchi)

• ParallelEnumerable.ThenByDescending (keySelector)

• ParallelEnumerable.ThenByDescending (keySelector, qiyosiy)

• ParallelEnumerable.ToArray ()

• ParallelEnumerable. ToDordam (keySelector)

• ParallelEnumerable. ToDordam (keySelector, qiyosiy)

• ParallelEnumerable. ToDordam (elementSelector)

• ParallelEnumerable. ToDordam (elementSelector, taqqoslash)

• ParallelEnumerable.ToList ()

• ParallelEnumerable.ToLookup (keySelector)

• ParallelEnumerable.ToLookup (keySelector, qiyosiy)

• ParallelEnumerable.ToLookup (keySelector, elementSelector)

• ParallelEnumerable.ToLookup (keySelector, elementSelector, qiyosiy)

•ParallelEnumerable.Union (ikkinchi)

•ParallelEnumerable.Union (ikkinchi, taqqoslagich)

• ParallelEnumerable.Where (predikat)

• ParallelEnumerable.WithCancellation (bekor qilishToken)

•ParallelEnumerable.WithDegreeOfParallelism (darajasiOffarparalizm)

• ParallelEnumerable.WithExmissionsMode (performanceMode)

• ParallelEnumerable.WithMergeOptions (mergeOptions)

• ParallelEnumerable.Zip (ikkinchi, natija tanlagich)


Download 30,73 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish