Каков наилучший размер буфера при использовании BinaryReader для чтения больших файлов (> 1 ГБ)?

m чтение двоичных файлов и вот пример:

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16*1024];
    int read;
    while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        ......
    }

}

Очевидно, что размер буфера (16 * 1024) играет большую роль в производительности. Я'читал, что это зависит от технологии ввода / вывода (SATA,SSD,SCSIи т. д.), а также размер фрагмента раздела, файл которого существует на нем (мы можем определить при форматировании раздела).

Но вот вопрос:Есть ли формула или лучшие практики для определения размера буфера? Прямо сейчас ям на основе метода проб и ошибок.

Редактировать: яя протестировал приложение на моем сервере с разными размерами буфера, и я получил лучшую производительность с 4095 * 256 * 16 (16MB) !!! 4096 на 4 секунды медленнее.

Вот некоторые старые посты, которые очень полезны, но я могудо сих пор не понимаю причину:

Более быстрый (небезопасный) BinaryReader в .NET

Оптимальный размер файла буфера чтения?

Файловый ввод / вывод с потоками - лучший размер буфера памяти

Как вы определяете идеальный размер буфера при использовании FileInputStream?

Ответы на вопрос(2)

Ваш ответ на вопрос