【发布时间】:2021-05-02 22:03:16
【问题描述】:
我正在处理给定目录中的大量文件。我需要获取所有文件的列表,但我发现 for 循环太慢了。
有什么方法可以在不使用 for 循环的情况下列出目录中的文件?
【问题讨论】:
-
你必须循环,
for是你在 Go 中的做法。它不太可能是专门的for,而是你用来获取文件列表以及你在 for 循环中所做的事情。你能展示一下你的慢代码吗? -
我想知道是否有一种方法可以在不循环的情况下列出给定目录中的所有文件,还有其他方法吗?如果我们谈论数十万到数百万个文件,有没有比循环更快的方法?
-
慢的不是“循环”,而是你的基准测试错误。
-
@Barry There are three main ways to get the list of files in a directory 并且它们都不需要循环。单个目录中的数百万个文件成为文件系统问题,而不是 Go 问题。请向我们展示您的代码以及有关您的情况的更多详细信息,否则我们将无能为力。
-
@Barry 您可以清理代码以显示仅读取目录中的文件;如果不使用标准库,我无法理解您是如何做到的。同样,慢的不是 Go 的循环,而是你使用它的方式。 Go 的标准库将循环。您可以自己查看底层代码:readdirnames 和 readdir。同样,单个目录中的数百万个文件将使大多数文件系统不堪重负。考虑一种不同的方法。
标签: go