7

ParallelEnumerable.Range 和 和 有什么区别Enumerable.Range(...).AsParallel()

ParallelEnumerable.Range创建范围分区(最适合每个项目的 cpu 时间相等的操作)

asEnumerable.Range(...).AsParallel()可能执行为rangeorchunk

有什么性能差异吗?我什么时候应该使用 which ?

4

1 回答 1

11

如果你正在执行一个操作,它的 CPU 压力随着它的迭代而增长,那么你会想要使用它,AsParallel因为它可以在迭代时进行调整。但是,如果您只需要并行运行并且操作在迭代时不会产生更大的压力,那么请使用它,ParallelEnumerable.Range因为它可以立即对工作进行分区。

参考这篇文章以获得更详细的解释。

因此,假设您在每次迭代中执行一些复杂的数学运算,并且随着输入值的增长,数学运算需要更长的时间,您将希望使用AsParallel它来进行调整。但是,如果您将相同的选项与设置注册表设置之类的设置一起使用,您会看到性能下降,因为与此相关的开销AsParallel是不必要的。

于 2012-09-28T18:35:47.323 回答