私は、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. Python:ファイルを行単位で読み込む最も最適な方法
- 5. Cでファイルを読み込む(/書く)
- 6. 最適なバッファサイズ(2)
- 7. 最適なバッファサイズ - TCP
- 8. Javaから巨大な.pdfファイルを読み込むための最高のAPI
- 9. GCSからBigQueryにファイルを読み込む - 最適なアプローチは何ですか?
- 10. C#ディレクトリ内の最新のファイルを読み込む
- 11. Androidの最適なバッファサイズ
- 12. C:ファイルを配列に読み込む
- 13. Cリンクリストにファイルを読み込む
- 14. C#での非同期読み込み - 最適化/適切な使用?
- 15. C#:SerialPort:読み取りと書き込みのバッファサイズ
- 16. 倍数のデータ型を持つときにファイルの最後まで読み込む適切な方法C++
- 17. Python2.7でファイルを読み込むための再帰関数
- 18. ウェブサイトに埋め込まれたExcelファイルを読み込む
- 19. ファイルから読み込むC++(シンプル)
- 20. C#ファイルから読み込む
- 21. データを読み込むための最速の方法
- 22. ライブラリを読み込むためのSystem.load
- 23. C#xnaファイルを読み込むためにxnaファイルにコードを書き込む方法
- 24. 動的コンテンツをiOSのUITableViewに読み込むための適切なアプローチ
- 25. ファイルを読み込めません。C++
- 26. C++で大きなファイルをランダムに読み込むとスローダウン
- 27. C#Windowsアプリで大きなファイルを読み込む方法
- 28. swf埋め込みswfファイルをaspxページに読み込む
- 29. C++ - セグメンテーションエラーバイナリファイルを読み込む
- 30. 複数の.txtファイルを読み込むためのPythonマップ
もちろん、バッファサイズは重要ですが、「最適」は異なります。 –
大きいほど良い、理由の中で。また、2の累乗(または少なくとも512の倍数)のバッファサイズを使用することには、いくつかの小さな利点があります。 –
@HotLicksはなぜ '512'を説明できますか –