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时间相等的操作)

其中as
Enumerable.Range(…).aspallel()可以作为
Range
chunk
执行


性能有什么不同吗?我应该在什么时候使用它?

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

有关更详细的解释,请参阅

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