私は、read
機能を使用してCで大きなファイルを読み込む必要があります。私は、パフォーマンス面でバッファサイズを変えているかどうかは分かりません。ファイルサイズは数十GBに達することがあります。Cでファイルを読み込むための最適なバッファサイズ
答えて
最初は:確かに、ディスクの論理/物理セクタサイズの倍数で、hdparmを使用して確認できます。これは同じです
ヒント:libcのfopen(3)
、fread(3)
、fwrite(3)
などの機能はすでにあなたのために良いバッファリングを行います。
別のヒント:ファイル全体をストリームする必要はなく、ランダムに部分にアクセスする必要がある場合は、mmap()
を試してみてください。
OSは、他に指示されなければ、 'open | read | write'(ページキャッシュ+ readahead)でもバッファリングを十分に行います(' O_DIRECT'/'O_SYNC') – SaveTheRbtz
ショートバージョン。
です。 x86バッファサイズは4096バイトです(1つはpage size、もう1つはAdvanced Formatブロックサイズです)。
より長いバージョンです。
UNIXでは、カーネル、libc、ファイルシステム、ハードウェアなどによって異なります。バージョンやコンパイルオプションだけでなく、実行時の調整可能パラメータ(例:先読み設定)にも依存します。 DI30。
試してみてください!特定のシステムの最適な読み書きバッファサイズを簡単に判断する方法については、Advanced Programing in UNIX Environment第3.9章「I/O効率」を参照してください。
- 1. C#FileStream:大きなファイルを書き込むための最適なバッファサイズ?
- 2. listViewの連絡先を読み込むための最適化?
- 3. Cで読み込むためにファイルを開くには?
- 4. Cでファイルを読み込む(/書く)
- 5. Javaから巨大な.pdfファイルを読み込むための最高のAPI
- 6. 最適なバッファサイズ - TCP
- 7. 最適なバッファサイズ(2)
- 8. C:ファイルを配列に読み込む
- 9. C#での非同期読み込み - 最適化/適切な使用?
- 10. Androidの最適なバッファサイズ
- 11. Python2.7でファイルを読み込むための再帰関数
- 12. C#:SerialPort:読み取りと書き込みのバッファサイズ
- 13. ライブラリを読み込むためのSystem.load
- 14. データを読み込むための最速の方法
- 15. ファイルから読み込むC++(シンプル)
- 16. C#ファイルから読み込む
- 17. swf埋め込みswfファイルをaspxページに読み込む
- 18. 動的コンテンツをiOSのUITableViewに読み込むための適切なアプローチ
- 19. ファイルを読み込めません。C++
- 20. C++ - セグメンテーションエラーバイナリファイルを読み込む
- 21. phpファイルの読み込みコードを最適化
- 22. pickleファイルを読み込む
- 23. JavaでXmlFormatter形式のログファイルを読み込むのに最適な方法は?
- 24. コンマで区切られたファイルからクラスを読み込むのに最適な方法
- 25. JDK 1.6で.mp3からデータを読み込むのに最適なアドオン
- 26. IE7 Javascriptファイルの読み込み - 最適化
- 27. これは、.emacsからユーザー.elファイルを読み込むための適切なEmacs(24.3.2)lispスタイルですか?
- 28. C++の空白を含むファイルからの読み込み
- 29. C#+ SQL Server - 新しい行をメモリに読み込むための最速/最も効率的な方法
- 30. C読み込むバイナリファイル
もちろん、バッファサイズは重要ですが、「最適」は異なります。 –
大きいほど良い、理由の中で。また、2の累乗(または少なくとも512の倍数)のバッファサイズを使用することには、いくつかの小さな利点があります。 –
@HotLicksはなぜ '512'を説明できますか –