Размер буфера в 1 КБ кажется немного маленьким. Как правило, размер буфера «один размер подходит всем» отсутствует. Вам необходимо установить размер буфера, который соответствует поведению вашего алгоритма. Теперь, вообще-то, не очень хорошая идея иметь действительно огромный буфер, но иметь слишком маленький или не соответствующий тому, как вы обрабатываете каждый блок, тоже не так уж и хорошо.
Если вы просто читаете данные один кусок за другим целиком в память перед их обработкой, я бы использовал больший буфер. Я бы, вероятно, использовал 8 КБ или 16 КБ, но, вероятно, не больше.
С другой стороны, если вы обрабатываете данные в потоковом режиме, чтение блока, а затем обработка его перед чтением следующего, более полезные буферы меньшего размера. Еще лучше, если вы используете потоковую передачу данных со структурой, я бы изменил объем прочитанных данных, чтобы они точно соответствовали типу данных, которые вы читаете. Например, если вы читаете двоичные данные, которые содержат 4-символьный код, число с плавающей запятой и строку, я бы прочитал 4-символьный код в массив из 4 байтов, а также число с плавающей запятой. Я бы прочитал длину строки, а затем создал буфер для одновременного чтения всего фрагмента строковых данных.
Если вы выполняете потоковую обработку данных, я бы посмотрел на классы BinaryReader и BinaryWriter. Это позволяет очень легко работать с двоичными данными, не беспокоясь о самих данных. Это также позволяет вам отделить ваш буфер по размеру от фактических данных, с которыми вы работаете. Вы можете установить 16-килобайтный буфер в базовом потоке и легко читать отдельные значения данных с помощью BinaryReader.