У меня есть модуль, который отвечает за чтение, обработку и запись байтов на диск. Байты поступают через UDP, и после сборки отдельных дейтаграмм последний массив байтов, который обрабатывается и записывается на диск, обычно составляет от 200 до 500 000 байтов. Иногда встречаются массивы байтов, размер которых после сборки превышает 500 000 байтов, но это относительно редко.
В настоящее время я использую метод FileOutputStream
write (byte \ [\])
. Я также экспериментирую с заключением FileOutputStream
в BufferedOutputStream
, включая использование конструктора, который принимает размер буфера в качестве параметра .
Похоже, что использование BufferedOutputStream
имеет тенденцию к немного большей производительности, но я только начал экспериментировать с разными размерами буфера. У меня есть только ограниченный набор образцов данных для работы (два набора данных из образцов прогонов, которые я могу передать через свое приложение).Есть ли какое-то общее практическое правило, которое я мог бы применить, чтобы попытаться вычислить оптимальные размеры буфера, чтобы уменьшить количество операций записи на диск и максимизировать производительность записи на диск с учетом информации, которую я знаю о данных, которые я пишу?