Я создаю сервер во встроенной системе. У меня есть файловая система FAT на SD-карте, которая содержит файл, который должен быть отправлен по HTTP какому-нибудь клиенту через Wi-Fi который подключается к системе.
Сначала я попытался прочитать файл побайтно, что было очень медленно. Чтобы улучшить чтение файлов, я ввел буфер. Я читаю из файла в буфер, а затем записываю содержимое буфера в поток, который отправляется клиенту:
file -> buffer -> network
Увеличение размера буфера увеличивает скорость передачи данных. Я предполагаю, что это связано с уменьшением количества операций чтения в файловой системе.
Однако произвольный большой буфер (скажем, 5000 байт) контрпродуктивен. Я подозреваю, что это из-за буфера. Сервер тратит слишком много времени на заполнение буфера, что сбивает сеть с толку.
По-видимому, есть некий оптимальный размер буфера, при котором скорость чтения увеличивается, не вызывая замедления из-за раздувания буфера.
Хотелось бы повысить общую производительность по скорости передачи данных. В настоящее время я получаю около 3 МБ / с, что слишком медленно. Я контролирую размер буфера и размер кластера. Могу ли я улучшить производительность системы, сделав правильный выбор для этих двух значений?
Как выбрать эти размеры для увеличения скорости передачи данных?