普林克里面的普林克?

时间:2012-10-30 18:52:42

标签: c# .net-4.0 parallel-processing plinq

假设我有DataTable

var dt = getDataTable();

然后我做

Parallel.For (0, dt.Rows.Count, i => Foo (dt.Rows[i]));

Foo是一个对row进行一些计算的函数。

Foo 使用Plinq吗?或者不应该?

(在分割后分成核心没有意义。)

1 个答案:

答案 0 :(得分:4)

  

Foo还应该使用Plinq吗?或者不应该?

通常,您通常只希望在“最高级别”进行并行化。通过制作更大的工作项,您可以最大化总吞吐量,因为您减少了安排工作所需的开销。

如果您在Parallel.For循环中使用PLINQ,则会增加开销(为了安排工作项),但无法利用更多内核,因此您可能会减少你的整体表现。因此,在这种情况下,我不建议在Foo内使用PLINQ(前提是DataTable有足够的行可以很好地并行化)。