Прежде всего, как уже заметил комментатор, использование чудовищно большого буфера может быть контрпродуктивным. Как только размер вашего потокового буфера превышает размер сетевого пакета, буферизация на стороне приложения теряет свою эффективность. (Данные в вашем «большом» буфере должны быть разделены на куски размера пакета стеком TCP / IP, прежде чем они попадут в сеть.) Действительно, если буфер на стороне приложения очень большой, вы можете обнаружить, что ваши данные получают застрял в буфере на долгое время в ожидании его заполнения ... пока сеть фактически не используется.
(Buffered...
устройства чтения, записи и потоки в основном предназначены для предотвращения большого количества системных вызовов, которые передают крошечные объемы данных. При превышении 10 КБ буферизация не сильно помогает производительности.)
Другое дело, что во многих средах ОС пропускная способность сети фактически ограничена виртуализацией и параметрами настройки сетевого стека по умолчанию. Чтобы повысить пропускную способность, вам может потребоваться настройка на уровне операционной системы.
Наконец, если ваш сетевой путь идет по сетевому пути, который перегружен, имеет высокую сквозную задержку или каналы с ограниченной скоростью передачи данных, то вы вряд ли получите быструю передачу данных независимо от того, как вы настраиваете вещи ,
(Сжатие может помочь ... если вы можете позволить ЦП с обеих сторон ... но некоторые каналы передачи данных уже выполняют прозрачное сжатие.)