DirectoryStream 和 File.list() 之间是否存在性能差异
我曾尝试在 Linux 平台上对这两个 java 程序进行 strace,它使用具有相同参数的 getdents64 系统调用。在我看来,两者的性能相同,但编程范式不同
你可能会觉得这很有趣:
如果他们都调用同一个系统调用,为什么会有区别?遍历目录基本上是 I/O 绑定的。
性能优势DirectoryStream
以内存使用的形式出现,并且能够在列出目录时处理返回的路径对象,而不是构建完整列表并将其存储在内存中,然后对其进行迭代。这在列出包含大量文件的目录或递归遍历目录树时非常有用。
更多信息在这里:http ://blog.eyallupu.com/2011/11/java-7-working-with-directories.html