2012-04-11 11 views
0

整数の大きな3D配列をファイルに保存し、C++で再度読み込む必要があります。 256 * 256 * 256 = 16777216の整数です。C++での大きな配列の保存と読み込み

これを保存してもう一度読み込む最良の方法は何ですか?私はほとんどの場合、迅速な読み込み時間に興味があります。

+0

複数のスレッドを使用してファイルから読み込むことができるはずです(任意の数のリーダーが問題ありません)。それらを同じ配列に格納することは、(互いに干渉しないように)慎重に行わなければなりません。私は、複数のスレッドを実行可能にするような方法でデータを試して保存します(つまり改行形式)。 – twain249

+1

@ twain249私は、ボトルネックがディスクであり、ファイル内で前後に動かすことで時間を追求することで、それがもっと良くなるわけではないと言っています...ちょうどスティン... – littleadv

+0

[ zlibを持つバッファ](http://stackoverflow.com/q/4538586/1084416) –

答えて

8

アレイが連続したメモリに割り当てられている場合(つまり、各ディメンションを別々に割り当てない場合)、メモリブロック全体をファイルにダンプできます。それは必要なだけの時間を要しますが、それは最小限のオーバーヘッドになります(つまり、データ全体のバイナリ書き込みを呼び出します)。

1つのシステムに保存して別のシステムにロードする場合は、データ表現に問題がある可能性があります。この場合、配列をシリアル化して、各値を制御された問題に保存したいと思うでしょう。

+0

ありがとう!私はそれを実装しようとします。私を助けることができるウェブ参照がありますか? – hansdam

1

あなたは(2)、より複雑なオブジェクトを保存するための一貫した方法をしたい、と(3)ソ​​リューションをしたい、あなたは(1)ディスク上の簡単ストアなどのデータへの能力をしたい場合は特に、Boost.Serializationに興味がある可能性がありそれは移植性があります。

関連する問題