sobota, 28 sierpnia 2010

Kiedy używać PLINQ a kiedy Parallel.ForEach?

Na stronach Microsoftu można znaleźć ciekawy artykuł autorstwa Pameli Vagata na temat tego kiedy stosować PLINQ a kiedy pętle Parallel.ForEach.

Warto poświęcić trochę czasu i dokładnie przeczytać artykuł wraz z przykładami w nim zawartymi. Dowiemy się kiedy stosować wymienione rozwiązania jak i zobaczymy na prawdę ciekawie przygotowane przykłady.

Najważniejsze informacje zawarte w artykule (dla leniwych):
Parallel.ForEach stosujemy gdy:
- operacje mają wykonywać się niezależnie jak i chcemy ustawić ilość aktywnych wątków
- gdy chcemy mieć dostęp do lokalnie wykonywanego wątku (ograniczymy też przy tym koszty synchronizacji wątków)
- gdy chcemy przerwać działanie np. po znalezieniu szukanego elementu (korzystamy z metod Break i Stop)

PLINQ stosujemy gdy:
- chcemy zachować kolejność w kolekcji - PLINQ + metoda AsOrdered - przydatne jest to np. gdy dokonujemy konwersji klatek filmu, które powinny być ustawione w takiej samej kolejności na wyjściu jak i na wejściu
- gdy dokonujemy operacje na dwóch niezależnych kolekcjach - możemy wtedy skorzystać z metody Zip


Polecam jednak samemu przeczytać artykuł i zapamiętać zawarte tam informacje.

Brak komentarzy:

Prześlij komentarz