【问题标题】:Buffered vs non buffered, which one to use?缓冲与非缓冲,使用哪一个?
【发布时间】:2010-11-08 11:37:58
【问题描述】:

如果这是重复的,我很抱歉,但我无法找到每种类型的最佳做法的明确答案。

我想知道定义何时使用 BufferedReader 与 FileReader 或 BufferedInput/OutputStream 与 FileInput/OutputStream 的适当条件是什么?是否有某种公式总能告诉您什么是合适的?

我应该一直使用缓冲吗?

谢谢

【问题讨论】:

  • “确定性”是什么意思?
  • S.Lott:我认为他只是在寻找你应该使用每一个的时间。
  • 我猜是确定的 == 每种类型的最佳实践是什么
  • @stackMe:请更新您的问题以澄清它。不要评论你自己的问题。

标签: java file buffered


【解决方案1】:

如果流要进行大量小访问,请使用缓冲区。如果您要进行相对较少、相对较大的访问,请使用无缓冲。

【讨论】:

    【解决方案2】:

    您应该使用无缓冲 I/O 的唯一情况是缓冲带来的延迟和聚合不适用于您的应用程序。

    【讨论】:

    • 当您使用byte[] 在 InputStream 和 OutputStream 之间(或反之亦然)缓冲内容时会怎样。你会在它周围包裹一个 Buffered* 吗?
    【解决方案3】:

    " 是否有某种公式总能告诉您什么是合适的?"

    如果有,它已经在库中,并且不是您必须做出的设计决定。

    既然没有合适的答案,你必须做出设计决定,你必须真正考虑它。

    或者,您可以尝试这两个选项,然后根据您的独特问题和独特标准查看哪个“更好”。

    大多数标准 I/O 库都是缓冲的。这暗示大多数 I/O 受益于缓冲。但不是所有的。例如,游戏需要对游戏控件进行无缓冲访问。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        我建议您使用 Buffered* 如果这可以让您的应用程序运行得更快,否则我不会打扰它。即使用真实数据进行尝试,看看是否有帮助。

        【讨论】:

          猜你喜欢
          • 2010-11-29
          • 2012-01-14
          • 1970-01-01
          • 2014-01-30
          • 1970-01-01
          • 2012-10-08
          • 1970-01-01
          • 2020-10-23
          相关资源
          最近更新 更多