1

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

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

PLINQ 查询给出溢出异常

我已经尝试过使用 Dobbs 博士教程中的这些内容,但我不确定我需要覆盖什么才能使用 long 作为索引:

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

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

对于我正在迭代的 IEnumerable 达到的任何大小,我可以整天使用 Parallel.ForEach。

但它比使用 PLINQ 慢得多,看到每次迭代都是对字母/数字组合的一组计算,并且每个字符串组合的计算相同,而且我读过 Parallel.ForEach 不是最适合这个。PLINQ 正在使用块分区,我相信这就是它执行迭代速度如此之快的原因。

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

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

4

0 回答 0