Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 3240|Antwoord: 2

[Bron] .NET/C# prestatieoptimalisatie met behulp van PLINQ parallelle query

[Link kopiëren]
Geplaatst op 02-03-2024 17:30:49 | | | |
Wat is een parallelle query?

Veel aspecten van een PLINQ-query lijken op niet-parallelle LINQ to Objects-query's. Net als sequentiële LINQ-queries voeren PLINQ-queries bewerkingen uit op elke in-memory IEnumerable of IEnumerable<T> databron en stellen de uitvoering uit, dat wil zeggen, ze beginnen pas te worden uitgevoerd als de query is opgesomd. Het belangrijkste verschil is dat PLINQ probeert het meeste uit alle processors op je systeem te halen. De methode is om de databron op te splitsen in fragmenten en vervolgens parallelle queries uit te voeren op meerdere processors voor elk fragment in een aparte worker thread. In veel gevallen betekent parallelle uitvoering dat queries aanzienlijk sneller lopen.

Met parallelle uitvoering kan PLINQ de prestaties aanzienlijk verbeteren (vergeleken met oudere code voor bepaalde soorten zoekopdrachten), vaak door simpelweg AsParallel-queryoperaties aan de databron toe te voegen. Parallelisme kan echter zijn eigen complexiteit met zich meebrengen, waardoor niet alle querybewerkingen sneller verlopen in PLINQ. Parallelisme vertraagt zelfs sommige zoekopdrachten. Daarom is het belangrijk te begrijpen hoe kwesties zoals sorteren parallelle queers beïnvloeden. Voor meer informatie, zie Understanding acceleration in PLINQ.

Eenvoudig voorbeeld

Voor 10.000 gegevensstukken in de collectie is de code als volgt:



Andere functies die door PLINQ worden gebruikt

1. Met AsSequential, als je geen parallelle queries wilt gebruiken in het proces, kun je deze functie gebruiken om sequentiële queries te herstellen.


2. Met AsOrdered, omdat PLINQ parallel draait, kunnen de resultaten niet in volgorde zijn, wat kan worden doorgevraagd door de AsOrderd-methode toe te voegen.


3. Gebruik WithDegreeOfParallelism, deze eigenschap kan het aantal CUP's parallel op de computer instellen.


Scènenoot

In veel gevallen kunnen queries worden geparalleliseerd, maar de overhead van het opzetten van parallelle queries kan opwegen tegen de prestatieverbeteringen.Als de query niet veel berekeningen uitvoert, of als de databron klein is, kan de PLINQ-query trager zijn dan een sequentiële LINQ to Objects-query。 Je kunt de Parallel Performance Analyzer in Visual Studio Team Server gebruiken om de prestaties van verschillende queries te vergelijken, verwerkingsknelpunten te vinden en te bepalen of queries parallel of sequentieel draaien.

Referentie:De hyperlink-login is zichtbaar.





Vorig:【Practical Combat】OpenWrt installatie van luci-app plugin tutorial
Volgend:SQL Server gebruikt uitgebreide gebeurtenissen om deadlock-problemen bij te houden
 Huisbaas| Geplaatst op 20-03-2024 22:29:27 |
HuairongChen Geplaatst op 2024-3-20 16:05
Ik gebruikte Parallel om synchrone parallelisme mogelijk te maken en zo de prestaties te verdubbelen, maar ik moet ook aandacht besteden aan het probleem van parallelle dataverwerking...

Je zet item+=1; Vervang het door thread.sleep(100) voor meer duidelijk contrast
Geplaatst op 20-03-2024 16:05:24 |


Ik gebruikte Parallel om synchrone parallelisme mogelijk te maken en zo de prestaties te verdubbelen, maar ik moet ook letten op het probleem van parallelle dataverwerking
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com