PLINQ自定义分区程序允许迭代长范围

时间:2012-11-01 17:18:40

标签: c# task-parallel-library plinq parallel.foreach

我需要帮助为PLINQ创建一个自定义分区器,让我可以迭代IEnumerable,其长度大于Int32。

这是参考这个问题,给我的答案是写一个自定义分区器:

PLINQ query giving overflow exception

我已经尝试过使用Dobbs博士的教程,但是我不知道我需要覆盖什么才能使用long来获取索引:

http://www.drdobbs.com/windows/custom-parallel-partitioning-with-net-4/224600406?pgno=3

也许我不会以正确的方式解决这个问题。

我可以整天使用Parallel.ForEach来获取我正在迭代的IEnumerable获取的任何大小。

但它比使用PLINQ要慢得多,因为每次迭代都是字母/数字组合的一组计算,并且对于每个字符串组合都是相同的计算,这是有道理的,我读过Parallel.ForEach不是最适合这个。 PLINQ正在使用块分区,我相信这就是为什么它的迭代速度要快得多。

有没有一种方法可以调整Parallel.ForEach给我与PLINQ相同的速度,但同时允许我迭代超过21.4亿的大小?

ETA:没有解决方案,在看到自定义分区示例之后,它们与int to long的问题无关。

0 个答案:

没有答案