Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 3240|Svar: 2

[Kilde] .NET/C# ydelsesoptimering ved brug af PLINQ parallel forespørgsel

[Kopier link]
Opslået på 02/03/2024 17.30.49 | | | |
Hvad er en parallel forespørgsel?

Mange aspekter af en PLINQ-forespørgsel ligner ikke-parallelle LINQ to Objects-forespørgsler. Ligesom sekventielle LINQ-forespørgsler udfører PLINQ-forespørgsler operationer på enhver IEnumerable eller IEnumerable<T> datakilde i hukommelsen og udskyder udførelsen, dvs. de begynder ikke at køre, før forespørgslen er opregnet. Den største forskel er, at PLINQ forsøger at få mest muligt ud af alle processorer på dit system. Metoden er at opdele datakilden i fragmenter og derefter udføre parallelle forespørgsler på flere processorer for hvert fragment i en separat arbejdstråd. I mange tilfælde betyder parallel eksekvering, at forespørgsler kører betydeligt hurtigere.

Ved parallel udførelse kan PLINQ markant forbedre ydeevnen (sammenlignet med ældre kode for visse typer forespørgsler), ofte ved blot at tilføje AsParallel-forespørgselsoperationer til datakilden. Dog kan parallelisme introducere sin egen kompleksitet, så ikke alle forespørgselsoperationer kører hurtigere i PLINQ. Faktisk sænker parallelisme nogle forespørgsler. Derfor er det vigtigt at forstå, hvordan spørgsmål som sortering vil påvirke parallelle forespørgsler. For mere information, se Forståelse af acceleration i PLINQ.

Simpelt eksempel

For 10.000 datastykker i samlingen er koden som følger:



Andre funktioner brugt af PLINQ

1. Ved at bruge AsSequential, hvis du ikke ønsker at bruge parallelle forespørgsler i processen, kan du bruge denne funktion til at gendanne sekventielle forespørgsler.


2. Ved brug af AsOrdered, fordi PLINQ kører parallelt, kan resultaterne være ude af rækkefølge, hvilket kan forespørges ved at tilføje AsOrderd-metoden.


3. Brug WithDegreeOfParallelism, denne egenskab kan sætte antallet af CUP'er parallelt på computeren.


Scenenote

I mange tilfælde kan forespørgsler paralleliseres, men overheaden ved at opsætte parallelle forespørgsler kan opveje ydelsesgevinsterne.Hvis forespørgslen ikke udfører et stort antal beregninger, eller hvis datakilden er lille, kan PLINQ-forespørgslen være langsommere end en sekventiel LINQ til Objekter-forespørgsel。 Du kan bruge Parallel Performance Analyzer i Visual Studio Team Server til at sammenligne ydeevnen af forskellige forespørgsler, finde behandlingsflaskehalse og afgøre, om forespørgsler kører parallelt eller sekventielt.

Henvisning:Hyperlink-login er synlig.





Tidligere:【Practical Combat】OpenWrt installation af luci-app plugin tutorial
Næste:SQL Server bruger udvidede hændelser til at spore deadlock-problemer
 Udlejer| Opslået på 20/03/2024 22.29.27 |
HuairongChen Opslået den 2024-3-20 kl. 16:05
Jeg brugte Parallel til at muliggøre synkron parallelisme for at fordoble ydeevnen, men jeg skal også være opmærksom på problemet med parallel databehandling...

Du sætter element+=1; Erstat den med thread.sleep(100) for mere tydelig kontrast
Opslået på 20/03/2024 16.05.24 |


Jeg brugte Parallel til at muliggøre synkron parallelisme for at fordoble ydeevnen, men jeg skal også være opmærksom på problemet med parallel databehandling
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com