如果我有一个对象集合,每个对象的进程需要很多时间,
EnumerablePartitionerOptions.NoBuffering
与完全不使用Partitioner
之间的区别是什么?
EnumerablePartitionerOptions.NoBuffering:
创建一个分区程序,从可枚举源中获取项目 一次并且不使用可以访问的中间存储 多线程更有效率。此选项提供支持 低延迟(项目一旦可用就会被处理 来自源代码)并为其间的依赖关系提供部分支持 items(一个线程无法死锁等待该线程的项目 本身负责处理)。
谢谢。
更新: 谁更快?为什么?
IEnumerable<int> Numbers1 = Enumerable.Range(1, 100);
Parallel.ForEach(Numbers1, (number1) => VeryExpensiveMethod(number1));
//
//
Partitioner<int> Numbers2 = Partitioner.Create(Enumerable.Range(1, 100), EnumerablePartitionerOptions.NoBuffering);
Parallel.ForEach(Numbers2, (number1) => VeryExpensiveMethod(number1));