バイナリファイルを開くC++コードを書く必要があり、5 MBの '1'を書き込む。特定のサイズのファイルにconstパターンを書き込む
は現在、私のコードは次のとおりです。
#define BYTES_BUFFER_SIZE_5MB (1024*1024*5)
static char buffer[BYTES_BUFFER_SIZE_5MB];
memset(buffer, 0xff, BYTES_BUFFER_SIZE_5MB);
ofstream myFile ("data.bin", ios::out | ios::binary);
myFile.write(buffer, BYTES_BUFFER_SIZE_5MB);
ファイルに書き込むためmemset
様方法がありますので、私はバッファを避けることができますか?
'1024 * 1024 * 5' =あなたが16ビットの' int'を持っていればメリー。コンパイル時に評価可能な定数式には非常に注意する必要があります。 – Bathsheba
大きなバッファを使用する優れた点は、システムがバックグラウンドでデータ転送を処理できることです。たとえば、ドライバはDMAプロセッサを使用してデータをハードドライブに転送できます。 CPUはメモリを読み込み、デバイスにデータを書き込んだり、繰り返したりする必要がありません。 –
各トランザクションにオーバーヘッドがあります。最適なソリューションは、トランザクションごとのデータサイズを最大化することです。オーバーヘッドは、ドライブスピンアップ、スピンダウンドライブ、セクターの特定などです。 –