ParallelEnumerable.Range和Enumerable.Range(...).AsParallel()之间的区别是什么
ParallelEnumerable.Range创建范围分区(最适合于每个项目的cpu时间相等的操作)
其中,as Enumerable.Range(...).AsParallel()可以作为range或chunk执行
性能上有什么不同吗?我应该在什么时候使用哪一个?
发布于 2012-09-29 02:35:47
如果你正在执行一个CPU压力随着迭代而增加的操作,那么你会想要使用AsParallel,因为它可以在迭代时进行调整。但是,如果您只需要并行运行,并且操作在迭代时不会产生更多压力,那么可以使用ParallelEnumerable.Range,因为它可以立即对工作进行分区。
参考this article获取更详细的解释。
因此,让我们假设您在每次迭代中执行一些复杂的数学运算,并且随着输入值的增长,数学运算所需的时间更长,您将希望使用AsParallel,以便它可以进行调整。但是,如果您使用相同的选项,例如设置注册表设置,您将看到性能下降,因为与AsParallel相关的开销是不必要的。
https://stackoverflow.com/questions/12645354
复制相似问题