Kaj je vzporedna poizvedba?
Veliko vidikov PLINQ poizvedbe je podobnih neparalelnim LINQ to Objects poizvedbam. Tako kot zaporedne LINQ poizvedbe tudi PLINQ poizvedbe izvajajo operacije na kateremkoli IEnumerable ali IEnumerable viru podatkov v pomnilniku<T> in odložijo izvajanje, torej se ne začnejo izvajati, dokler poizvedba ni našteta. Glavna razlika je, da PLINQ poskuša izkoristiti vse procesorje na vašem sistemu. Metoda je razdelitev podatkovnega vira na fragmente in nato izvajanje vzporednih poizvedb na več procesorjih za vsak fragment v ločeni delovni niti. V mnogih primerih vzporedno izvajanje pomeni, da poizvedbe tečejo bistveno hitreje.
Pri paralelnem izvajanju lahko PLINQ bistveno izboljša zmogljivost (v primerjavi s starejšo kodo za določene vrste poizvedb), pogosto preprosto z dodajanjem AsParallel poizvedb v podatkovni vir. Vendar pa lahko paralelizem uvede svojo lastno kompleksnost, zato v PLINQ ne potekajo vse poizvedbene operacije hitreje. Pravzaprav vzporednost upočasni nekatere poizvedbe. Zato je pomembno razumeti, kako bodo vprašanja, kot je sortiranje, vplivala na vzporedne poizvedbe. Za več informacij glejte Razumevanje pospeševanja v PLINQ.
Preprost primer
Za 10.000 podatkov v zbirki je koda naslednja:
Druge funkcije, ki jih uporablja PLINQ
1. Z uporabo AsSequential, če ne želite uporabljati vzporednih poizvedb v procesu, lahko to funkcijo uporabite za obnovitev zaporednih poizvedb.
2. Z uporabo AsOrdered, ker PLINQ teče vzporedno, rezultati morda niso v vrstnem redu, kar lahko poizvedujemo z dodajanjem metode AsOrdered.
3. Uporabite WithDegreeOfParallelism, ta lastnost lahko nastavi število CUP vzporedno na računalniku.
Opomba o prizoru
V mnogih primerih je mogoče poizvedbe paralelizirati, vendar lahko stroški vzpostavitve vzporednih poizvedb pretehtajo izboljšave zmogljivosti.Če poizvedba ne izvede velikega števila izračunov ali če je podatkovni vir majhen, je PLINQ poizvedba lahko počasnejša od zaporedne poizvedbe LINQ do objektov。 Uporabite lahko Parallel Performance Analyzer v Visual Studio Team Server za primerjavo zmogljivosti različnih poizvedb, iskanje ozkih grl v obdelavi in ugotavljanje, ali poizvedbe potekajo vzporedno ali zaporedno.
Referenčni:Prijava do hiperpovezave je vidna.
|