3

列挙し、BlockingCollection<T> where T : IComparable各項目のテキスト ファイルに行を書き込むコンシューマーがあります。最終結果は、最大で約 7Gb ~ 10Gb のテキスト ファイルになります。しかし、それらは順番どおりではありません。

非常に大きくなる可能性があるため、メモリ内のリストを並べ替えることができません。解決策として考えられる唯一の方法は、一時テキスト ファイルに順番に書き込み、最後にシャッフルすることですが、それが非常に効率的であるとは思えません。

これを行う方法についてのアイデアはありますか?

4

2 に答える 2

1

あなたが探しているものなら、インデックスソートだと思います。アイデアは、大きなアイテムごとにインデックスを割り当ててからインデックスをソートし、最後に順序付けられたインデックス配列をループしてファイルを書き出すことです。

ウィキペディア:メモリ使用パターンとインデックスの並べ替え

于 2012-10-31T14:12:32.973 に答える
0

結果を SSIS を使用して SQL のステージング テーブルにロードし、そのように並べ替えました。

于 2012-11-14T15:42:25.180 に答える