SSD(ソリッドステートドライブ)に大量のデータを書き込もうとしています。そして膨大な量とは80GBを意味します。
私は解決策を求めてウェブを閲覧しましたが、私が思いついたのはこれでした:
#include <fstream>
const unsigned long long size = 64ULL*1024ULL*1024ULL;
unsigned long long a[size];
int main()
{
std::fstream myfile;
myfile = std::fstream("file.binary", std::ios::out | std::ios::binary);
//Here would be some error handling
for(int i = 0; i < 32; ++i){
//Some calculations to fill a[]
myfile.write((char*)&a,size*sizeof(unsigned long long));
}
myfile.close();
}
Visual Studio 2010と完全な最適化でコンパイルされ、Windows7で実行されるこのプログラムは、最大で約20MB / sです。本当に気になるのは、Windowsが他のSSDからこのSSDに150MB / sから200MB / sのどこかでファイルをコピーできることです。したがって、少なくとも7倍速くなります。だからこそ、もっと速く行けるようになるべきだと思います。
執筆をスピードアップする方法はありますか?
fwrite()
を使用すると、ピーク書き込み速度の約80%を得ることができました。それでFILE_FLAG_NO_BUFFERING
初めて、最高速度を得ることができました。