Как выбрать размер буфера ввода / вывода для чтения файла в Windows? - PullRequest
2 голосов
/ 30 июня 2011

Исследуя некоторую медленную производительность моего приложения при чтении файла по глобальной сети, я заметил, что копирование этого файла в проводнике Windows было значительно быстрее.

Некоторое дальнейшее исследование с Process Monitor выявило причину: мое приложение использовало значение по умолчанию BUFSIZE среды выполнения C, равное 512, в то время как Windows Explorer каким-то образом определил, что он должен читать файл в блоках по 61440 байт (что, по-видимому, является максимальным значением, поддерживаемым SMB или Windows реализация SMB). В результате Windows Explorer пришлось сделать МНОГО меньше круговых рейсов и работать намного быстрее.

Большинство рекомендаций по размеру буфера находятся где-то в диапазоне 4k-16k, но для среды WAN минимизация циклических переходов путем максимизации размера буфера имеет смысл. Как Windows Explorer определяет, какой размер буфера использовать?

1 Ответ

0 голосов
/ 30 июня 2011

Я бы подумал, что что-то меньшее, чем сетевой MTU, может быть хорошо

...