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.
|