2012-02-02 2 views
2

이 예제를 조회 :'자넬 병렬'PLINQ는 PLINQ MSDN 문서에서

http://msdn.microsoft.com/en-us/library/dd997399.aspx

var queryA = from num in numberList.AsParallel() 
     select ExpensiveFunction(num); //good for PLINQ 

var queryB = from num in numberList.AsParallel() 
     where num % 2 > 0 
     select num; //not as good for PLINQ 

이유는 '쾌적 병렬'로 간주 queryB되지 않는 이유는 무엇입니까? 목록의 각 요소가 다른 요소와 독립적이므로 여러 스레드에서 분할하는 것이 이상적입니다.

+6

인용문 - "queryB는 Select 문에 충분한 작업이 없기 때문에 아마도 좋은 후보가 아니며 병렬 처리의 오버 헤드로 인해 대부분의 또는 모든 속도 향상이 상쇄됩니다" – user1096188

+0

알다시피 두 가지 종류의 사람이 있습니다. 이 세상 : user981225 및 user1096188. –

답변

4

두 번째 예가 병렬화에 적합하지 않은 이유는 단순히 여러 스레드에서 작업을 분할 할 때 발생하는 오버 헤드가 일반적으로 높기 때문에 병렬로 수행되는 작업이이 오버 헤드를 초과해야하기 때문입니다. 저렴한 운영은 좋은 후보가 아닙니다.