缓冲 vs 非缓冲,哪一个更适合使用?(涉及IT技术)

12

很抱歉如果这是一个重复的问题,但我找不到一个明确的答案来确定每种类型的最佳实践。

我想知道什么是使用 BufferedReader vs FileReader 或 BufferedInput/OutputStream vs FileInput/OutputStream 的适当条件?是否有一种公式可以始终告诉您何时使用哪一种更为合适?

我应该总是使用缓冲区吗?

谢谢


“definitive” 是什么意思? - S.Lott
S.Lott: 我认为他只是想知道何时应该使用每个。 - Thomas Owens
我猜“definitive”意味着每种类型的最佳实践。 - stackMe
@stackMe:请更新您的问题以澄清。不要在自己的问题下发表评论。 - S.Lott
5个回答

15

如果流将有许多小访问,请使用缓冲区;如果您将有相对较少但是比较大的访问,请使用非缓冲。


4

只有在缓冲带来的延迟和聚合对你的应用不合适时,才应该使用非缓冲I/O。


当您在一个InputStream和OutputStream(或反之亦然)之间使用byte []进行缓冲时,您会怎么做?您会将其包装在一个缓冲区中吗? - Jé Queue

3

“是否有一种公式可以总是告诉你什么是合适的?”

如果有的话,它已经在图书馆中了,而且不会是您必须做出的设计决策。

由于没有明确的答案,你必须自己做出设计决策,你必须认真思考。

或者,您可以尝试两种选项,并根据您的独特问题和独特标准确定哪个更好。

大多数标准 I/O 库都是缓冲的。这表明大多数 I/O 受益于缓冲。但并非所有情况都是如此。例如,游戏需要对游戏控件进行无缓冲访问。


2

请记住,BufferedReader 还提供了一个方便的 readLine() 方法,允许您一次读取一行内容。


1

如果使用Buffered*可以使您的应用程序更快,我建议您使用它,否则我就不会烦恼了。即尝试使用真实数据来查看它是否有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接