Я использую ByteBuffer.allocateDirect() для выделения некоторой буферной памяти для чтения файла в память, а затем в конечном итоге хэширует эти байты файлов и получает хэш файл (SHA) из него. Входные файлы имеют большой размер, от нескольких килобайт до нескольких ГБ.
Я прочитал несколько потоков и страниц (даже некоторые из них) относительно выбора размера буфера. Некоторым рекомендуется попытаться выбрать тот, который использует собственная файловая система, чтобы минимизировать шансы операции чтения для частичного блока и т.д. Например, буфер размером 4100 байт и по умолчанию для NTFS - 4096, поэтому дополнительные 4 бита потребуют отдельной операции чтения, что крайне бесполезно.
Так что прилипание с полномочиями 2, 1024, 2048, 4096, 8192 и т.д. Я видел некоторые рекомендуемые буферы размером 32 КБ, а другие рекомендуют делать буфер размером входного файла (возможно, отлично подходит для небольших файлов, но как насчет больших файлов?).
Насколько важно придерживаться встроенных буферов размера блока? В современных условиях (при условии, что современный SATA-диск или лучше, по крайней мере, на 8 Мбайт кэша накопителя и другая современная ОС "магия" для оптимизации ввода-вывода), насколько критичен размер буфера и как лучше всего определить, какой размер для установки моего? Я мог бы статически установить его или динамически определить? Спасибо за понимание.