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