2012-02-02 49 views
2

這個例子是從MSDN PLINQ文章:'興高采烈水貨' PLINQ查詢

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 2012-02-02 18:38:36

+0

正如您所看到的,有兩種類型的人這個世界:user981225和user1096188。 – 2012-02-02 18:45:47

回答

4

第二個例子不適合並行化的原因很簡單,因爲在多線程上分割工作的開銷通常很高,因此並行完成的工作將不得不超過該開銷。廉價的手術不是一個好的選擇。