私は一連の実験を実行するソフトウェアを持っています (C++)。結果を保存しないと、すべての実験に 1 分強かかります。生成されたデータの総量は 2.5 G バイトに等しく、実験が終了するまでメモリに保存し、後でファイルに書き込むには大きすぎます。したがって、私はそれらをチャンクで書きます。
for(int i = 0; i < chunkSize;i++){
outfile << results_experiments[i] << endl;
}
where ofstream outfile("データ"); outfile は最後にのみ閉じられます。
ただし、それらを 4700 KB のチャンク (実際には 4700/Chunksize = results_experiments 要素のサイズ) で書き込むと、実験には約 50 倍の時間がかかります (1 時間以上...)。これは受け入れがたいことであり、以前の最適化の試みはばかげているように見えます。特に、これらの実験は、多くの異なるパラメーター設定などを使用して実行する必要があるため.. (少なくとも 100 回、できればそれ以上)
具体的な私の質問は次のとおりです。
書き込むのに理想的なチャンクサイズはどれくらいですか?
現在データを書き込む方法よりも効率的な方法 (または非常に非効率的な方法) はありますか?
基本的に:導入されたファイルIOオーバーヘッドをできるだけ小さくするのを手伝ってください..
結果のファイル(同じサイズ)をコピー(書き込みと読み取り!)するのに1分もかからないので、これをはるかに高速に実行できるはずだと思います..
コードは完全にプラットフォームに依存せず、(非標準の)ライブラリを使用しない必要があります(別のプラットフォーム用に別のバージョンとより複雑なインストール手順を提供できますが、それは面倒です..)合計実験時間を取得することが現実的でない場合5 分以内で、プラットフォーム/ライブラリの依存関係がない (可能性がある) 場合、これらの導入を真剣に検討します。(プラットフォームは Windows ですが、少なくとも Linux への簡単な移植は可能です)
あなたの努力に感謝。