Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 3240|Odpowiedź: 2

[Źródło] Optymalizacja wydajności .NET/C# z użyciem zapytania równoległego PLINQ

[Skopiuj link]
Opublikowano 02.03.2024 17:30:49 | | | |
Czym jest zapytanie równoległe?

Wiele aspektów zapytania PLINQ jest podobnych do nierównoległych zapytań LINQ do obiektów. Podobnie jak sekwencyjne zapytania LINQ, zapytania PLINQ wykonują operacje na dowolnym źródle danych IEnumerable lub IEnumerable w pamięci<T> i odkładają wykonanie, tzn. nie zaczynają się wykonywać po wyliczeniu zapytania. Główna różnica polega na tym, że PLINQ stara się maksymalnie wykorzystać wszystkie procesory na Twoim systemie. Metoda polega na podziału źródła danych na fragmenty, a następnie wykonywaniu równoległych zapytań na wielu procesorach dla każdego fragmentu w osobnym wątku roboczym. W wielu przypadkach wykonywanie równoległe oznacza, że zapytania działają znacznie szybciej.

Dzięki wykonywaniu równoległemu PLINQ może znacząco poprawić wydajność (w porównaniu do starszego kodu dla niektórych typów zapytań), często poprzez dodanie operacji zapytań AsParallel do źródła danych. Jednak równoległość może wprowadzać własną złożoność, dlatego nie wszystkie operacje zapytań w PLINQ działają szybciej. W rzeczywistości równoległość faktycznie spowalnia niektóre zapytania. Dlatego ważne jest, aby zrozumieć, jak takie kwestie jak sortowanie wpłyną na zapytania równoległe. Więcej informacji można znaleźć w artykule Zrozumienie przyspieszenia w PLINQ.

Prosty przykład

Dla 10 000 danych w kolekcji kod jest następujący:



Inne funkcje używane przez PLINQ

1. Korzystając z AsSequential, jeśli nie chcesz używać zapytań równoległych w procesie, możesz użyć tej funkcji do przywrócenia zapytań sekwencyjnych.


2. Przy użyciu AsOrdered, ponieważ PLINQ działa równolegle, wyniki mogą nie być w kolejności, co można zapytać, dodając metodę AsOrderd.


3. Użyj WithDegreeOfParallelism, ta właściwość pozwala ustawić liczbę CUP równolegle na komputerze.


Notatka do sceny

W wielu przypadkach zapytania można równolegle zorganizować, ale narzut związany z konfiguracją zapytań równoległych może przewyższyć korzyści wydajnościowe.Jeśli zapytanie nie wykonuje dużej liczby obliczeń lub jeśli źródło danych jest małe, zapytanie PLINQ może być wolniejsze niż sekwencyjne zapytanie LINQ do obiektów。 Możesz użyć Parallel Performance Analyzer w Visual Studio Team Server, aby porównać wydajność różnych zapytań, znaleźć wąskie gardła w przetwarzaniu i określić, czy zapytania działają równolegle czy sekwencyjnie.

Odniesienie:Logowanie do linku jest widoczne.





Poprzedni:【Practical Combat】OpenWrt instalacja tutorialu luci-app plugin
Następny:SQL Server wykorzystuje rozszerzone zdarzenia do śledzenia problemów z martwym punkcją
 Ziemianin| Opublikowano 20.03.2024 22:29:27 |
HuairongChen Opublikowano 2024-3-20 16:05
Użyłem Parallel, aby umożliwić równoległość synchronicyjną i podwoić wydajność, ale muszę też zwrócić uwagę na problem przetwarzania danych równoległych...

Wpisujesz przedmiot+=1; Zamień go na thread.sleep(100) dla bardziej wyraźnego kontrastu
Opublikowano 20.03.2024 16:05:24 |


Użyłem Parallel, aby umożliwić równoległość synchronicyjną i podwoić wydajność, ale muszę też zwrócić uwagę na problem przetwarzania danych równoległych
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com