ParallelEnumerable.Range
和 和 有什么区别Enumerable.Range(...).AsParallel()
?
ParallelEnumerable.Range
创建范围分区(最适合每个项目的 cpu 时间相等的操作)
asEnumerable.Range(...).AsParallel()
可能执行为range
orchunk
有什么性能差异吗?我什么时候应该使用 which ?
ParallelEnumerable.Range
和 和 有什么区别Enumerable.Range(...).AsParallel()
?
ParallelEnumerable.Range
创建范围分区(最适合每个项目的 cpu 时间相等的操作)
asEnumerable.Range(...).AsParallel()
可能执行为range
orchunk
有什么性能差异吗?我什么时候应该使用 which ?
如果你正在执行一个操作,它的 CPU 压力随着它的迭代而增长,那么你会想要使用它,AsParallel
因为它可以在迭代时进行调整。但是,如果您只需要并行运行并且操作在迭代时不会产生更大的压力,那么请使用它,ParallelEnumerable.Range
因为它可以立即对工作进行分区。
参考这篇文章以获得更详细的解释。
因此,假设您在每次迭代中执行一些复杂的数学运算,并且随着输入值的增长,数学运算需要更长的时间,您将希望使用AsParallel
它来进行调整。但是,如果您将相同的选项与设置注册表设置之类的设置一起使用,您会看到性能下降,因为与此相关的开销AsParallel
是不必要的。