Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 3240|Atsakyti: 2

[Šaltinis] .NET/C# našumo optimizavimas naudojant PLINQ lygiagrečią užklausą

[Kopijuoti nuorodą]
Paskelbta 2024-03-02 17:30:49 | | | |
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.





Ankstesnis:【Praktinė kova】 "OpenWrt" "luci-app" papildinio diegimo pamoka
Kitą:SQL serveris naudoja išplėstinius įvykius aklavietės problemoms sekti
 Savininkas| Paskelbta 2024-03-20 22:29:27 |
HuairongChen Publikuota: 2024-3-20 16:05
Aš naudojau Parallel, kad įgalinčiau sinchroninį lygiagretumą padvigubinti našumą, bet taip pat turiu atkreipti dėmesį į lygiagrečios duomenų apdorojimo problemą...

Įdėjote elementą+=1; Pakeiskite jį thread.sleep(100), kad būtų akivaizdesnis kontrastas
Paskelbta 2024-03-20 16:05:24 |


Naudojau "Parallel", kad sinchroninis lygiagretumas padvigubintų našumą, tačiau taip pat turiu atkreipti dėmesį į lygiagrečiojo duomenų apdorojimo problemą
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com