【问题标题】:Why the NIO code is faster than that of Java IO?为什么 NIO 代码比 Java IO 快?
【发布时间】:2014-12-09 11:12:46
【问题描述】:

我有很多关于 Java NIO 的问题。我已经阅读了许多文章,其中对它进行了更深入的讨论。但是我真的不知道NIO在哪些方面比IO快。

我还观察到,使用 Java NIO 代码下载 100MB 文件比使用 Java IO 代码下载至少快 10 倍。

现在我的问题是:

假设我正在下载一个 1KB 的文件。在这种情况下,1KB 文件的 NIO 代码是否仍会快十倍?

【问题讨论】:

  • 你为什么不做一些测试并找出自己?

标签: java io nio


【解决方案1】:

一般来说,NIO 比经典 Java IO 更快,因为它减少了内存中的复制量。但是,速度提高十倍是难以置信的,即使对于大文件也是如此。当我们谈论下载文件(而不是读取/写入磁盘)时,性能很可能取决于您正在从中加载的机器的带宽和端到端延迟。

最后,你很可能会发现 NIO 对小文件的相对加速会更小……因为建立网络连接、发送请求、处理 header 等等的开销。

【讨论】:

  • 感谢您的回答。再次,您能否在这行中更具体一点:“最后,您可能会发现 NIO 对小文件的相对加速会更小”。这是否意味着 1kb 文件可能需要更长的时间? P.S:我不是英语母语。有些短语可能会让我感到困惑。
  • 没有。我指的是相对加速/速度改进。因此,与经典 IO 相比,使用 NIO 的 100Kb 文件的复制速度可能会快 50%,但与经典 IO 相比,使用 NIO 的 1Kb 文件的复制速度可能会快 5%。
猜你喜欢
  • 2011-05-28
  • 2014-02-19
  • 2011-08-22
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 2015-11-02
相关资源
最近更新 更多