Буферизованный и не буферизированный, какой из них использовать?

Прошу прощения, если это дубликат, но я не смог найти окончательного ответа на то, что является наилучшей практикой для каждого типа.

Я хотел бы знать, какие подходящие условия определяют, когда следует использовать BufferedReader vs FileReader или BufferedInput/OutputStream vs FileInput/OutputStream? Есть ли какая-то формула, которая всегда подскажет вам, что подходит?

Должен ли я всегда использовать буферизацию?

Спасибо

Ответ 1

Используйте буфер, если поток будет иметь большой доступ. Используйте небуферизованный, если у вас будет относительно мало, относительно большой доступ.

Ответ 2

Единственный раз, когда вы должны использовать небуферизованный ввод-вывод, - это когда задержка и агрегация, вызванные буферизацией, не соответствуют вашему приложению.

Ответ 3

"Есть ли какая-то формула, которая всегда подскажет вам, что подходит?"

Если бы это было, это уже было бы в библиотеках и не было бы конструктивным решением, которое вам нужно было бы сделать.

Поскольку нет ответа pat, вы должны принять дизайнерское решение, вы должны действительно подумать об этом.

Или вы можете попробовать обе опции и посмотреть, какая из них "лучше", исходя из вашей уникальной проблемы и ваших уникальных критериев.

Большинство стандартных библиотек ввода-вывода буферизуются. Это намек на то, что большинство операций ввода-вывода выигрывает от буферизации. Но не все. Например, для игр требуется небуферизованный доступ к элементам управления игрой.

Ответ 4

Имейте в виду, что BufferedReader предоставляет вам удобный метод readLine(), который позволяет вам читать ваше содержимое по одной строке за раз.

Ответ 5

Я предлагаю вам использовать Buffered *, если это заставляет ваше приложение работать быстрее, иначе я бы не стал его беспокоить. т.е. попробуйте его с реалистичными данными, чтобы узнать, помогает ли это.