Ce este o interogare paralelă?
Multe aspecte ale unei interogări PLINQ sunt similare cu interogările non-paralele LINQ către Obiecte. La fel ca interogările LINQ secvențiale, interogările PLINQ efectuează operații asupra oricărei surse de date IEnumerabile sau IEnumerabile<T> din memorie și amână execuția, adică nu încep să ruleze până când interogarea nu este enumerată. Diferența principală este că PLINQ încearcă să profite la maximum de toate procesoarele de pe sistemul tău. Metoda constă în partiționarea sursei de date în fragmente și apoi efectuarea interogărilor paralele pe mai multe procesoare pentru fiecare fragment dintr-un fir de lucru separat. În multe cazuri, execuția paralelă înseamnă că interogările rulează semnificativ mai repede.
Prin execuția paralelă, PLINQ poate îmbunătăți semnificativ performanța (comparativ cu codul mai vechi pentru anumite tipuri de interogări), adesea prin simpla adăugare a operațiunilor de interogare AsParallel în sursa de date. Totuși, paralelismul poate introduce propria complexitate, astfel încât nu toate operațiunile de interogare rulează mai rapid în PLINQ. De fapt, paralelismul încetinește unele interogări. Prin urmare, este important să înțelegem cum probleme precum sortarea vor afecta interogările paralele. Pentru mai multe informații, vezi Înțelegerea accelerației în PLINQ.
Exemplu simplu
Pentru 10.000 de date din colecție, codul este următorul:
Alte funcționalități folosite de PLINQ
1. Folosind AsSequential, dacă nu doriți să folosiți interogări paralele în proces, puteți folosi această funcție pentru a restaura interogările secvențiale.
2. Folosind AsOrdered, deoarece PLINQ rulează în paralel, rezultatele pot să nu fie în ordine, ceea ce poate fi interogat prin adăugarea metodei AsOrdered.
3. Folosirea WithDegreeOfParallelism, această proprietate poate seta numărul de CUPs în paralel pe calculator.
Notă de scenă
În multe cazuri, interogările pot fi paralelizate, dar efortul de a configura interogări paralele poate depăși câștigurile de performanță.Dacă interogarea nu efectuează un număr mare de calcule sau dacă sursa de date este mică, interogarea PLINQ poate fi mai lentă decât o interogare secvențială LINQ către obiecte。 Poți folosi Parallel Performance Analyzer în Visual Studio Team Server pentru a compara performanța diferitelor interogări, a identifica blocajele de procesare și a determina dacă interogările rulează în paralel sau secvențial.
Referință:Autentificarea cu hyperlink este vizibilă.
|