Возможный дубликат:
Как вы определяете идеальный размер буфера при использовании FileInputStream?
При чтении необработанных данных из файла (или любого входного потока) с использованием семейства С++ istream
read()
или C fread()
необходимо предоставить буфер и количество данных, которые нужно прочитать. Большинство программ, которые я видел, по-видимому, произвольно выбрали мощность 2 между 512 и 4096.
- Есть ли причина, по которой она должна/должна быть силой 2, или это просто естественный склонность программиста к степеням 2?
- Каким будет "идеальный" номер? Под "идеалом" я подразумеваю, что это будет самый быстрый. Я предполагаю, что он должен быть кратным размеру буфера базового устройства? Или, может быть, базового буфера объектов потока? Как бы я определил, какой размер этих буферов, во всяком случае? И как только я это сделаю, будет ли использование нескольких из них дать увеличение скорости только при использовании точного размера?
ИЗМЕНИТЬ
Большинство ответов, похоже, не могут быть определены во время компиляции. Я в порядке с поиском его во время выполнения.