istream
C ++のファミリread()
またはCのいずれかを使用してファイル(または任意の入力ストリーム)から生データを読み取る場合fread()
は、バッファと、読み取るデータの数を指定する必要があります。私が見たほとんどのプログラムは、512から4096の間で2の累乗を任意に選択したようです。
- 2の累乗でなければならない/すべきである理由はありますか、それともこれは2の累乗に対するプログラマーの自然な傾向ですか?
- 「理想的な」数は何でしょうか?「理想的」とは、それが最速であることを意味します。基盤となるデバイスのバッファサイズの倍数である必要があると思いますか?または、基になるストリームオブジェクトのバッファの可能性がありますか?とにかく、これらのバッファのサイズをどのように判断しますか?そして、私がそうしたら、それの倍数を使用すると、正確なサイズを使用するよりも速度が向上しますか?
編集
ほとんどの答えは、コンパイル時に決定できないということのようです。実行時にそれを見つけても大丈夫です。