Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 3240|Vastaus: 2

[Lähde] .NET/C# suorituskyvyn optimointi PLINQ-rinnakkaiskyselyllä

[Kopioi linkki]
Julkaistu 2.3.2024 17.30.49 | | | |
Mikä on rinnakkaiskysely?

Monet PLINQ-kyselyn osa-alueet ovat samankaltaisia kuin ei-rinnakkaiset LINQ to Objects -kyselyt. Kuten peräkkäiset LINQ-kyselyt, PLINQ-kyselyt suorittavat toimintoja mille tahansa muistissa olevalle IEnumerable- tai<T> IEnumerable-tietolähteelle ja lykkäävät suoritusta, eli ne eivät käynnisty ennen kuin kysely on lueteltu. Suurin ero on, että PLINQ pyrkii hyödyntämään kaikki järjestelmäsi prosessorit parhaalla mahdollisella tavalla. Menetelmänä on jakaa tietolähde fragmentteihin ja suorittaa rinnakkaiset kyselyt useille prosessoreille jokaiselle fragmentille erillisessä työntekijäsäikeessä. Monissa tapauksissa rinnakkainen suoritus tarkoittaa, että kyselyt suoritetaan merkittävästi nopeammin.

Rinnakkaissuorituksella PLINQ voi merkittävästi parantaa suorituskykyä (verrattuna vanhempaan koodiin tietyntyyppisissä kyselyissä), usein yksinkertaisesti lisäämällä AsParallel-kyselyoperaatioita tietolähteeseen. Rinnakkaisuus voi kuitenkin tuoda mukanaan oman monimutkaisuutensa, joten kaikki kyselyoperaatiot eivät toimi nopeammin PLINQ:ssa. Itse asiassa rinnakkaisuus hidastaa joitakin kyselyjä. Siksi on tärkeää ymmärtää, miten lajittelu vaikuttaa rinnakkaisiin kyselyihin. Lisätietoja löytyy kohdasta Kiihtyvyyden ymmärtäminen PLINQ:ssa.

Yksinkertainen esimerkki

10 000 aineiston osalta kokoelmassa koodi on seuraava:



Muita PLINQ:n käyttämiä ominaisuuksia

1. AsSequentialin avulla, jos et halua käyttää rinnakkaisia kyselyitä prosessissa, voit käyttää tätä ominaisuutta palauttaaksesi peräkkäisiksi kyselyiksi.


2. Käyttämällä AsOrderedia, koska PLINQ toimii rinnakkain, tulokset eivät välttämättä ole samassa järjestyksessä, mikä voidaan kysyä lisäämällä AsOrdered-menetelmä.


3. Käytä WithDegreeOfParallelismia, tämä ominaisuus voi asettaa tietokoneella rinnakkain olevien CUP-lukumäärän.


Kohtaushuomautus

Monissa tapauksissa kyselyt voidaan rinnakkaista, mutta rinnakkaisten kyselyjen asettamisen ylikuormitus voi ylittää suorituskyvyn parannukset.Jos kysely ei suorita suurta määrää laskelmia tai jos tietolähde on pieni, PLINQ-kysely voi olla hitaampi kuin peräkkäinen LINQ to Objects -kysely。 Voit käyttää Visual Studio Team Serverin Parallel Performance Analyzeria vertaillaksesi eri kyselyiden suorituskykyä, löytääksesi prosessointipullonkauloja ja selvittääksesi, suoritetaanko kyselyt rinnakkain vai peräkkäin.

Viittaus:Hyperlinkin kirjautuminen on näkyvissä.





Edellinen:【Practical Combat】OpenWrt installation of luci-app plugin tutorial
Seuraava:SQL Server käyttää laajennettuja tapahtumia kuolleiden ongelmien seuraamiseen
 Vuokraisäntä| Julkaistu 20.3.2024 22.29.27 |
HuairongChen Julkaistu 20.3.2024 klo 16:05
Käytin Parallelia mahdollistaakseni synkronisen rinnakkaisuuden, joka kaksinkertaisti suorituskyvyn, mutta minun täytyy myös kiinnittää huomiota datan rinnakkaiskäsittelyn ongelmaan...

Laitoit item+=1; Korvaa se thread.sleep(100):lla selkeämmän kontrastin saamiseksi
Julkaistu 20.3.2024 16.05.24 |


Käytin rinnakkaisjärjestelmää mahdollistaakseni synkronisen rinnakkaisuuden, joka kaksinkertaisti suorituskyvyn, mutta minun täytyy myös kiinnittää huomiota datan rinnakkaiskäsittelyn ongelmaan
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com