Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 3240|Svare: 2

[Kilde] .NET/C# ytelsesoptimalisering ved bruk av PLINQ parallell spørring

[Kopier lenke]
Publisert på 02.03.2024 17:30:49 | | | |
Hva er en parallell spørring?

Mange aspekter ved en PLINQ-spørring ligner på ikke-parallelle LINQ to Objects-spørringer. Som sekvensielle LINQ-spørringer utfører PLINQ-spørringer operasjoner på enhver IEnumerable eller IEnumerable<T> datakilde i minnet og utsetter utførelsen, det vil si at de ikke starter før spørringen er enumerert. Hovedforskjellen er at PLINQ prøver å få mest mulig ut av alle prosessorene på systemet ditt. Metoden er å dele datakilden opp i fragmenter og deretter utføre parallelle forespørsler på flere prosessorer for hvert fragment i en separat arbeidstråd. I mange tilfeller betyr parallell kjøring at spørringene kjører betydelig raskere.

Med parallell kjøring kan PLINQ forbedre ytelsen betydelig (sammenlignet med eldre kode for visse typer spørringer), ofte ved ganske enkelt å legge til AsParallel-spørringsoperasjoner i datakilden. Parallelisme kan imidlertid introdusere sin egen kompleksitet, så ikke alle spørringsoperasjoner går raskere i PLINQ. Faktisk bremser parallellisme noen spørringer. Derfor er det viktig å forstå hvordan spørsmål som sortering vil påvirke parallelle søk. For mer informasjon, se Forstå akselerasjon i PLINQ.

Enkelt eksempel

For 10 000 datastykker i samlingen er koden som følger:



Andre funksjoner brukt av PLINQ

1. Ved å bruke AsSequential, hvis du ikke vil bruke parallelle spørringer i prosessen, kan du bruke denne funksjonen til å gjenopprette sekvensielle spørringer.


2. Ved å bruke AsOrdered, fordi PLINQ kjører parallelt, kan resultatene være ude av rekkefølge, noe som kan forespørres ved å legge til AsOrderd-metoden.


3. Bruk WithDegreeOfParallelism, denne egenskapen kan sette antall CUP-er parallelt på datamaskinen.


Scenenotat

I mange tilfeller kan spørringer paralleliseres, men overheaden ved å sette opp parallelle spørringer kan oppveie ytelsesgevinstene.Hvis spørringen ikke utfører mange beregninger, eller hvis datakilden er liten, kan PLINQ-spørringen være tregere enn en sekvensiell LINQ to Objects-spørring。 Du kan bruke Parallel Performance Analyzer i Visual Studio Team Server for å sammenligne ytelsen til ulike spørringer, finne behandlingsflaskehalser og avgjøre om spørringene kjører parallelt eller sekvensielt.

Referanse:Innloggingen med hyperkoblingen er synlig.





Foregående:【Practical Combat】OpenWrt installasjon av luci-app plugin tutorial
Neste:SQL Server bruker utvidede hendelser for å spore fastlåste problemer
 Vert| Publisert på 20.03.2024 22:29:27 |
HuairongChen Publisert 2024-03-20 kl. 16:05
Jeg brukte Parallel for å muliggjøre synkron parallellisme for å doble ytelsen, men jeg må også være oppmerksom på problemet med parallell databehandling...

Du setter element+=1; Erstatt den med thread.sleep(100) for mer tydelig kontrast
Publisert på 20.03.2024 16:05:24 |


Jeg brukte Parallel for å muliggjøre synkron parallellisme for å doble ytelsen, men jeg må også være oppmerksom på problemet med parallell databehandling
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com