Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 3240|Răspunde: 2

[Sursă] Optimizarea performanței .NET/C# folosind interogarea paralelă PLINQ

[Copiază linkul]
Postat pe 02.03.2024 17:30:49 | | | |
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ă.





Precedent:【Practical Combat】OpenWrt instalarea tutorialului pluginului luci-app
Următor:SQL Server folosește evenimente extinse pentru a urmări problemele de blocaj
 Proprietarul| Postat pe 20.03.2024 22:29:27 |
HuairongChen Postat la 20-03-2024 16:05
Am folosit Parallel pentru a permite paralelismul sincron pentru a dubla performanța, dar trebuie să fiu atent și la problema procesării paralele a datelor...

Pui item+=1; Înlocuiește-l cu thread.sleep(100) pentru un contrast mai evident
Postat pe 20.03.2024 16:05:24 |


Am folosit Parallel pentru a permite paralelismul sincron și a dubla performanța, dar trebuie să fiu atent și la problema procesării paralele a datelor
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com