はじめに:
大きなバッファをバイナリ ファイルに効率的に書き込むには、多くの場合、パフォーマンス重視のアプリケーションにとって重要です。この記事では、C でこのプロセスを最適化する方法について検討します。
初期アプローチとボトルネック:
提供されたコードは、ファイルと比較してパフォーマンスが劣るようですコピー操作。潜在的なボトルネックは次のとおりです。
最適化されたソリューション:
A大幅に高速なアプローチは、FILE* と fwrite を使用することです:
#include <stdio.h> const unsigned long long size = 8ULL*1024ULL*1024ULL; unsigned long long a[size]; int main() { FILE* pFile; pFile = fopen("file.binary", "wb"); for (unsigned long long j = 0; j < 1024; ++j) { // Data generation fwrite(a, 1, size*sizeof(unsigned long long), pFile); } fclose(pFile); return 0; }
このコードは、SSD の限界に近づく約 220MB/s の書き込み速度を達成しました。
さらなる改良:
コード効率をさらに向上させるために、次のように実装できます。以下:
ベンチマークと結果:
さまざまなバッファ サイズ (1MB ~ 4GB) を使用して、さまざまなプラットフォーム (ラップトップとデスクトップ) でコードをベンチマークします。明らかになった:
結論:
要約すると、C でバイナリ ファイルに大きなバッファを効率的に書き込むには
以上がC でバイナリ ファイルの書き込み速度を最大化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。