Kas yra lygiagreti užklausa?
Daugelis PLINQ užklausos aspektų yra panašūs į nelygiagrečias LINQ su objektais užklausas. Kaip ir nuoseklios LINQ užklausos, PLINQ užklausos atlieka operacijas su bet kuriuo atmintyje esančiu IEnumerable arba IEnumerable<T> duomenų šaltiniu ir atideda vykdymą, t. y. jos nepradedamos vykdyti, kol užklausa neišvardijama. Pagrindinis skirtumas yra tas, kad PLINQ stengiasi maksimaliai išnaudoti visus jūsų sistemos procesorius. Metodas yra padalinti duomenų šaltinį į fragmentus ir atlikti lygiagrečias užklausas keliuose procesoriuose kiekvienam fragmentui atskiroje darbinėje gijoje. Daugeliu atvejų lygiagretus vykdymas reiškia, kad užklausos vykdomos žymiai greičiau.
Lygiagrečiai vykdant, PLINQ gali žymiai pagerinti našumą (palyginti su senesniu tam tikrų tipų užklausų kodu), dažnai tiesiog pridedant AsParallel užklausų operacijas prie duomenų šaltinio. Tačiau lygiagretumas gali sukelti savo sudėtingumą, todėl ne visos užklausų operacijos PLINQ vykdomos greičiau. Tiesą sakant, paralelizmas iš tikrųjų sulėtina kai kurias užklausas. Todėl svarbu suprasti, kaip tokios problemos kaip rūšiavimas paveiks lygiagrečias užklausas. Daugiau informacijos rasite Spartinimo supratimas PLINQ.
Paprastas pavyzdys
10 000 kolekcijos duomenų vienetų kodas yra toks:
Kitos PLINQ naudojamos funkcijos
1. Naudodami AsSequential, jei nenorite naudoti lygiagrečių užklausų, galite naudoti šią funkciją nuoseklioms užklausoms atkurti.
2. Naudojant AsOrdered, kadangi PLINQ veikia lygiagrečiai, rezultatai gali būti netvarkingi, o to galima užklausti pridedant AsOrdered metodą.
3. Naudokite WithDegreeOfParallelism, ši savybė gali lygiagrečiai nustatyti CUP skaičių kompiuteryje.
Scenos pastaba
Daugeliu atvejų užklausos gali būti lygiagrečios, tačiau lygiagrečių užklausų nustatymo pridėtinės išlaidos gali nusverti našumo padidėjimą.Jei užklausa neatlieka daug skaičiavimų arba jei duomenų šaltinis yra mažas, PLINQ užklausa gali būti lėtesnė nei nuosekli LINQ į objektus užklausa。 Galite naudoti "Visual Studio Team Server" lygiagrečiojo efektyvumo analizatorių, kad palygintumėte įvairių užklausų našumą, rastumėte apdorojimo kliūtis ir nustatytumėte, ar užklausos vykdomos lygiagrečiai, ar nuosekliai.
Nuoroda:Hipersaito prisijungimas matomas.
|