我需要帮助为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的问题无关。