C# ParallelEnumerable.Range与Enumerable.Range.AsParallel?
C# ParallelEnumerable.Range与Enumerable.Range.AsParallel?,c#,.net,linq,parallel-processing,C#,.net,Linq,Parallel Processing,ParallelEnumerable.Range和Enumerable.Range(…).AsParallel()之间有什么区别 ParallelEnumerable.Range创建范围分区(最适合每个项目的cpu时间相等的操作) 其中asEnumerable.Range(…).aspallel()可以作为Range或chunk执行 性能有什么不同吗?我应该在什么时候使用它?如果您执行的操作的CPU压力随着迭代而增加,那么您需要使用AsParallel,因为它可以在迭代时进行调整。但是,如果您只
ParallelEnumerable.Range
和Enumerable.Range(…).AsParallel()之间有什么区别
ParallelEnumerable.Range
创建范围分区(最适合每个项目的cpu时间相等的操作)
其中asEnumerable.Range(…).aspallel()可以作为Range
或chunk
执行
性能有什么不同吗?我应该在什么时候使用它?如果您执行的操作的CPU压力随着迭代而增加,那么您需要使用AsParallel
,因为它可以在迭代时进行调整。但是,如果您只需要并行运行,并且该操作在迭代时不会产生更多压力,那么请使用ParallelEnumerable.Range
,因为它可以立即对工作进行分区
有关更详细的解释,请参阅
因此,让我们假设您在每次迭代中执行一些复杂的数学运算,随着输入值的增长,数学运算需要更长的时间,您需要使用aspallel
,以便它可以进行调整。但是如果您在设置注册表设置时使用相同的选项,您将看到性能下降,因为与aspallel
相关的开销是不必要的