現在、作業パケットを処理する大きなクラスター (50 台以上のコンピューター) があります。これらの作業パッケージの結果はすべて、コントローラー コンピューターによって収集されます。
したがって、データが半ランダムな方法で到着し、徐々に大きくなるとします。
0,2,3,8,7,1,4,9,10,11,6, ...
次に、データを順番にファイルにダンプする必要があります。ワークパッケージは 100M 以上あるので、バッファに次のワークパッケージの準備ができたらすぐにダンプします。
私は実際std::map
にこの「Random-Input-First-Output」に を使用しています。例:
std::map<int, DataStruct> buffer;
long long next_work = 0;
while(next_work != 100000000){
fill_buffer(buffer); //This method fills the buffer from the processing elements
if(buffer.find(next_work) != buffer.end()){
dump_to_file(buffer[next_work]); // Dumps it to file
buffer.erase(next_work++);
}
};
このバッファは、(ネットワーク ラグ、PC ラグ、切断などにより) 100000 個以上の要素に成長し、操作が遅くなることがあります。したがって、STL にはこの種の操作に適したクラスがあるのではないかと考えています。
ここでの適切な使用はありstd::map
ますか?
より良い/CPU効率の良いアプローチはありますか? (メモリ効率が良いかどうかはあまり気にしません)