Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 3240|Svar: 2

[Källa] .NET/C#-prestandaoptimering med hjälp av PLINQ parallellfråga

[Kopiera länk]
Publicerad på 2024-03-02 17:30:49 | | | |
Vad är en parallell fråga?

Många aspekter av en PLINQ-fråga liknar icke-parallella LINQ to Objects-frågor. Liksom sekventiella LINQ-frågor utför PLINQ-frågor operationer på alla IEnumerable eller IEnumerable<T> datakällor i minnet och skjuter upp exekveringen, det vill säga de börjar inte köras förrän frågan har räknats upp. Den största skillnaden är att PLINQ försöker utnyttja alla processorer i ditt system på bästa sätt. Metoden är att dela upp datakällan i fragment och sedan utföra parallella frågor på flera processorer för varje fragment i en separat arbetstråd. I många fall innebär parallell exekvering att frågor körs avsevärt snabbare.

Med parallell exekvering kan PLINQ avsevärt förbättra prestandan (jämfört med äldre kod för vissa typer av frågor), ofta genom att helt enkelt lägga till AsParallel-frågeoperationer i datakällan. Parallellism kan dock introducera sin egen komplexitet, så inte alla frågeoperationer går snabbare i PLINQ. Faktum är att parallellism faktiskt saktar ner vissa frågor. Därför är det viktigt att förstå hur frågor som sortering påverkar parallella frågor. För mer information, se Förstå acceleration i PLINQ.

Enkelt exempel

För 10 000 datadelar i samlingen är koden följande:



Andra funktioner som används av PLINQ

1. Med AsSequential, om du inte vill använda parallella frågor i processen, kan du använda denna funktion för att återställa sekventiella frågor.


2. Med AsOrdered, eftersom PLINQ körs parallellt, kan resultaten vara olagliga, vilket kan frågas genom att lägga till AsOrderd-metoden.


3. Använd WithDegreeOfParallelism, denna egenskap kan ställa in antalet CUP:er parallellt på datorn.


Scennotis

I många fall kan frågor parallelliseras, men överhuvudet för att sätta upp parallella frågor kan överväga prestandavinsterna.Om frågan inte utför ett stort antal beräkningar, eller om datakällan är liten, kan PLINQ-frågan vara långsammare än en sekventiell LINQ till Objekt-fråga。 Du kan använda Parallel Performance Analyzer i Visual Studio Team Server för att jämföra prestandan för olika frågor, hitta flaskhalsar i bearbetningen och avgöra om frågor körs parallellt eller sekventiellt.

Hänvisning:Inloggningen med hyperlänken är synlig.





Föregående:【Practical Combat】OpenWrt installation av luci-app plugin tutorial
Nästa:SQL Server använder utökade händelser för att spåra deadlock-problem
 Hyresvärd| Publicerad på 2024-03-20 22:29:27 |
HuairongChen Publicerad den 2024-3-20 16:05
Jag använde Parallel för att möjliggöra synkron parallellism för att dubbla prestandan, men jag måste också uppmärksamma problemet med parallell databehandling...

Du sätter föremål+=1; Byt ut den mot thread.sleep(100) för mer tydlig kontrast
Publicerad på 2024-03-20 16:05:24 |


Jag använde Parallel för att möjliggöra synkron parallellism och dubbla prestandan, men jag måste också uppmärksamma problemet med parallell databehandling
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com