Идеал Шаблона Модуля: Разоблачающий Шаблон Модуля
А аккуратное небольшое расширение очень устойчивого шаблона.
Используйте буфер, если к потоку требуется много малого доступа. Используйте небуферизованный доступ, если у вас будет относительно мало и относительно большой доступ.
Единственный раз, когда вы должны использовать небуферизованный ввод-вывод, - это когда задержка и агрегация, вызванные буферизацией, не подходят для вашего приложения.
«Есть ли формула, которая всегда подскажет вам, что подходит?»
Если бы она была, она уже была бы в библиотеках и не была бы дизайнерским решением, которое вы придется сделать.
Поскольку нет однозначного ответа, вы должны принять дизайнерское решение, вы должны действительно об этом подумать.
Или вы можете попробовать оба варианта и посмотреть, какой из них «лучше», исходя из вашего уникальная проблема и ваш уникальный критерий.
Большинство стандартных библиотек ввода-вывода буферизированы. Это намек на то, что большинство операций ввода-вывода выигрывают от буферизации. Но не все. Игры, например, нуждаются в небуферизованном доступе к элементам управления игрой.
Помните также, что BufferedReader
предоставляет вам удобный метод readLine ()
, который позволяет вам читать ваш контент по одной строке за раз. .
Я предлагаю вам использовать Buffered *, если это заставляет ваше приложение работать быстрее, иначе я бы не стал с этим возиться. т.е. попробуйте с реалистичными данными, чтобы увидеть, поможет ли это.