3

假设我有一个DataTable.

var dt = getDataTable();

然后我做

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

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

Foo应该使用Plinq吗?还是不应该?

(已经划分之后再划分核心是没有意义的。)

4

1 回答 1

4

Foo 也应该使用 Plinq 吗?还是不应该?

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

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

于 2012-10-30T18:54:44.697 回答