Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 3240|Odpověď: 2

[Zdroj] Optimalizace výkonu .NET/C# pomocí paralelního dotazu PLINQ

[Kopírovat odkaz]
Zveřejněno 02.03.2024 17:30:49 | | | |
Co je to paralelní dotaz?

Mnoho aspektů dotazu PLINQ je podobných neparalelním dotazům LINQ to Objects. Stejně jako sekvenční LINQ dotazy, i PLINQ dotazy provádějí operace na jakémkoli zdroji dat v paměti IEnumerable nebo IEnumerable<T> a odkládají vykonání, tj. nezačínají se vykonávat, dokud není dotaz vyčíslen. Hlavní rozdíl je v tom, že PLINQ se snaží co nejlépe využít všechny procesory na vašem systému. Metoda spočívá v rozdělení datového zdroje na fragmenty a následném paralelním dotazování na více procesorech pro každý fragment v samostatném pracovním vlákně. V mnoha případech znamená paralelní vykonávání to, že dotazy běží výrazně rychleji.

Díky paralelnímu provádění může PLINQ výrazně zlepšit výkon (ve srovnání se starším kódem pro určité typy dotazů), často jednoduše přidáním dotazovacích operací AsParallel do datového zdroje. Paralelizismus však může přinést vlastní složitost, takže ne všechny dotazovací operace běží v PLINQ rychleji. Ve skutečnosti paralelizismus některé dotazy zpomaluje. Proto je důležité pochopit, jak otázky jako třídění ovlivní paralelní dotazy. Pro více informací viz Porozumění akceleraci v PLINQ.

Jednoduchý příklad

Pro 10 000 datových částí ve sbírce je kód následující:



Další funkce používané PLINQ

1. Pomocí AsSequential, pokud nechcete používat paralelní dotazy v procesu, můžete tuto funkci použít k obnovení na sekvenční dotazy.


2. Při použití AsOrdered, protože PLINQ běží paralelně, výsledky nemusí být v pořadí, což lze dotazovat přidáním metody AsOrderd.


3. Použijte WithDegreeOfParallelism, tato vlastnost může nastavit počet CUP paralelně na počítači.


Poznámka ke scéně

V mnoha případech lze dotazy paralelizovat, ale režijní režie při nastavování paralelních dotazů může převážit nad výkonnostními zisky.Pokud dotaz neprovede velké množství výpočtů nebo je zdroj dat malý, může být dotaz PLINQ pomalejší než sekvenční dotaz LINQ na objekty。 Můžete použít Parallel Performance Analyzer ve Visual Studio Team Server k porovnání výkonu různých dotazů, nalezení úzkých míst ve zpracování a určení, zda dotazy běží paralelně nebo sekvenčně.

Odkaz:Přihlášení k hypertextovému odkazu je viditelné.





Předchozí:【Practical Combat】OpenWrt instalace luci-app plugin tutoriál
Další:SQL Server používá rozšířené události ke sledování problémů se zablokováním
 Pronajímatel| Zveřejněno 20.03.2024 22:29:27 |
HuairongChen Zveřejněno 2024-3-20 16:05
Použil jsem Parallel k umožnění synchronního paralelismu a zdvojnásobení výkonu, ale musím také věnovat pozornost problému paralelního zpracování dat...

Zadáte položku+=1; Nahraďte ho thread.sleep(100) pro zřetelnější kontrast
Zveřejněno 20.03.2024 16:05:24 |


Použil jsem Parallel k umožnění synchronního paralelismu a zdvojnásobení výkonu, ale musím si také dát pozor na problém paralelního zpracování dat
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com