Действительно, это не имеет большого значения.
Конечно, если вы используете действительно небольшие буферы, вам, возможно, придется сделать несколько дополнительных вызовов вниз по слоям, чтобы получить байты (хотя поток, вероятно, выполняет хотя бы некоторую буферизацию - я не знаю, какие у него значения по умолчанию) являются). И конечно, если вы используете действительно большие буферы, вы потратите немного памяти и внесете некоторую фрагментацию. Поскольку вы явно делаете IO здесь, в любое время, когда вы получаете выгоду от настройки буферов, будет доминировать время IO.
Как правило, я иду с силой два между 2048 (2k) и 8192 (8k). Просто убедитесь, что вы знаете, что делаете, если у вас есть буфер, равный или превышающий 85 000 байт (это тогда "большой объект" и подчиняется другим правилам GC ).
На самом деле, более важным, чем размер буфера, является то, как долго вы его держите. Для объектов вне кучи больших объектов GC очень хорошо справляется с очень короткоживущими объектами (коллекции Gen 0 быстрые) или с очень долгоживущими объектами (Gen 2). Объекты, которые живут достаточно долго, чтобы добраться до Быт 1 или 2 перед освобождением, сравнительно более дороги и, как правило, стоят гораздо больше времени, чем беспокойство, чем размер буфера.
Последнее замечание: если вы думаете, что у вас проблемы с производительностью из-за размера используемых вами буферов, проверьте его. Это маловероятно, но, кто знает, может быть, у вас странное слияние версии ОС, сетевого оборудования и выпуска драйверов, что имеет некоторую странную проблему с буферами определенного размера.