代码之家  ›  专栏  ›  技术社区  ›  vpram86

log4j是否使用NIO将数据写入文件?

  •  4
  • vpram86  · 技术社区  · 15 年前

    4 回复  |  直到 15 年前
        1
  •  3
  •   Confusion    15 年前

    认为值得修改 log4j使用NIO还可以使它更加

    你似乎觉得NIO“更快”,但一般来说这不是真的。试着创建两个文件,一个是标准IO,一个是NIO,向其中写入一堆数据并关闭它们。你会看到表演几乎没有什么不同。NIO只会在某些用例中表现得更好;最常见的情况是 许多的 连接。

        2
  •  3
  •   krock    15 年前

    查看 FileAppender source . 基本上是标准的 java.io .

        3
  •  1
  •   irreputable    15 年前

    在这种情况下,我不明白为什么FileChannel会比FileOutputStream快。

    也许用MappedByteBuffer?但在append模式下,行为依赖于操作系统。

    最终,性能取决于你的硬盘,你的代码无关紧要。

        4
  •  1
  •   Claude    12 年前

    一些 O'Reilly's Java NIO book :

    文件通道总是阻塞,无法放入 延迟。网络文件系统通常具有较高的延迟,但通常 从相同的优化中获益。非阻塞范式 面向流的I/O对于面向文件的I/O来说意义不大 对于文件I/O,真正的赢家是异步I/O,它让 进程从操作系统请求一个或多个I/O操作 稍后请求的I/O完成的时间。异步I/O是 正在考虑作为未来NIO增强。

    consideration