Int32 を超える長さの IEnumerable を反復処理できる PLINQ 用のカスタム パーティショナーを作成する際に助けが必要です。
これは、私に与えられた答えがカスタムパーティショナーを作成するというこの質問に関連しています。
ドブス博士のチュートリアルからこれらをいじってみましたが、インデックスに long を使用するために何をオーバーライドする必要があるかわかりません:
http://www.drdobbs.com/windows/custom-parallel-partitioning-with-net-4/224600406?pgno=3
たぶん、私はこれについて正しい方法で行っていません。
Parallel.ForEach は、繰り返し処理している IEnumerable が取得する任意のサイズに対して、1 日中使用できます。
しかし、PLINQ を使用するよりもはるかに遅いです。これは、すべての反復が文字/数字の組み合わせに対する一連の計算であり、すべての文字列の組み合わせに対して同じ計算であることを考えると理にかなっています。Parallel.ForEach はそうではありません。これに最適です。PLINQ はチャンク パーティショニングを使用しており、それが反復を非常に高速に実行している理由だと思います。
Parallel.ForEach を調整して PLINQ と同じ速度にすると同時に、21 億 4000 万を超えるサイズを反復処理できるようにする方法はありますか?
ETA: これに対する解決策はありませんか。カスタム パーティションの例を見た後、int から long への問題とは何の関係もありません。