Mi az a párhuzamos lekérdezés?
A PLINQ lekérdezés számos aspektusa hasonló a nem párhuzamos LINQ to Objects lekérdezésekhez. Akárcsak a szekvenciális LINQ lekérdezések, a PLINQ lekérdezések is végrehajtanak műveleteket bármely memóriában található IEnumerable vagy IEnumerable<T> adatforráson, és elhalasztják a végrehajtást, azaz csak akkor kezdenek el a végrehajtás, amikor a lekérdezés elsorolódik. A fő különbség, hogy a PLINQ igyekszik a lehető legjobban kihozni a rendszered összes processzorát. A módszer az, hogy az adatforrást fragmentumokra osztják, majd párhuzamos lekérdezéseket hajtanak végre több processzoron minden egyes fragmentumhoz egy külön munkafonalban. Sok esetben a párhuzamos végrehajtás miatt a lekérdezések jelentősen gyorsabban futnak.
Párhuzamos végrehajtással a PLINQ jelentősen javíthatja a teljesítményt (bizonyos típusú lekérdezéseknél a régebbi kódhoz képest), gyakran egyszerűen AsParallel lekérdezési műveletek hozzáadásával az adatforráshoz. Azonban a párhuzamosság saját összetettséget hozhat, így nem minden lekérdezési művelet gyorsabban fut a PLINQ-ben. Valójában a párhuzamosság néhány lekérdezést lelassít. Ezért fontos megérteni, hogyan befolyásolják a sorozás kérdései a párhuzamos lekérdezéseket. További információért lásd: A PLINQ gyorsulásának megértése.
Egyszerű példa
A gyűjteményben található 10 000 adatdarabra a kód a következő:
Egyéb PLINQ által használt funkciók
1. Az AsSequential használatával, ha nem szeretnél párhuzamos lekérdezéseket használni a folyamat során, ezt a funkciót használhatod a szekvenciális lekérdezések visszaállítására.
2. Az AsOrdered használatával, mivel a PLINQ párhuzamosan fut, az eredmények nem biztos, hogy sorrendben, amit az AsOrdered metódus hozzáadásával lehet lekérdezni.
3. A WithDegreeOfParallelism használata lehetővé teszi a számítógépen párhuzamosan lévő CUP-ok számát.
Jelenet megjegyzés
Sok esetben a lekérdezések párhuzamosak lehetnek, de a párhuzamos lekérdezések beállításának többletterhelése meghaladhatja a teljesítménynövekedést.Ha a lekérdezés nem végez sok számítást, vagy ha az adatforrás kicsi, a PLINQ lekérdezés lassabb lehet, mint egy sorozatos LINQ to Objects lekérdezés。 A Visual Studio Team Server Parallel Performance Analyzer-ét használhatod a különböző lekérdezések teljesítményének összehasonlítására, feldolgozási szűk keresztmetszetekre és annak megállapítására, hogy a lekérdezések párhuzamosan vagy egymás után futnak-e.
Utalás:A hiperlink bejelentkezés látható.
|