假设我有DataTable
。
var dt = getDataTable();
然后我做
Parallel.For (0, dt.Rows.Count, i => Foo (dt.Rows[i]));
Foo
是一个对row
进行一些计算的函数。
Foo 还使用Plinq
吗?或者不应该?
(在分割后分成核心没有意义。)
答案 0 :(得分:4)
Foo还应该使用Plinq吗?或者不应该?
通常,您通常只希望在“最高级别”进行并行化。通过制作更大的工作项,您可以最大化总吞吐量,因为您减少了安排工作所需的开销。
如果您在Parallel.For
循环中使用PLINQ,则会增加开销(为了安排工作项),但无法利用更多内核,因此您可能会减少你的整体表现。因此,在这种情况下,我不建议在Foo
内使用PLINQ(前提是DataTable
有足够的行可以很好地并行化)。