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