EnumerablePartitionerOptions.NoBuffering与根本不使用Partitioner有什么区别?

时间:2013-05-03 12:16:50

标签: c# .net-4.5

如果我有一个对象集合,每个对象的进程需要很多时间, EnumerablePartitionerOptions.NoBuffering与完全不使用Partitioner之间的区别是什么?

http://msdn.microsoft.com/en-us/library/system.collections.concurrent.enumerablepartitioneroptions.aspx

  

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));

0 个答案:

没有答案