Go 以高效的方式递归列出目录和文件

Go 以高效的方式递归列出目录和文件,go,Go,go的文件路径。Walk这样说 文件按词法顺序遍历,这使得输出具有确定性,但这意味着对于非常大的目录,遍历可能效率低下。漫游不遵循符号链接 还有什么其他有效的方法可以做到同样的事情呢?没有“有效”的方法可以做到同样的事情(按词汇顺序行走)。你要么必须排序(这是“低效的”),要么按随机顺序行走(这是不一样的) 除非您测量并使用filepath.Walk确实是您的瓶颈,否则您不必担心“效率低下”这个小词。特别是因为它没有说“这将是低效的”,只是“可以”。Can的含义是:可以手工创建100k文件名,并

go的
文件路径。Walk
这样说

文件按词法顺序遍历,这使得输出具有确定性,但这意味着对于非常大的目录,遍历可能效率低下。漫游不遵循符号链接

还有什么其他有效的方法可以做到同样的事情呢?

没有“有效”的方法可以做到同样的事情(按词汇顺序行走)。你要么必须排序(这是“低效的”),要么按随机顺序行走(这是不一样的)


除非您测量并使用
filepath.Walk
确实是您的瓶颈,否则您不必担心“效率低下”这个小词。特别是因为它没有说“这将是低效的”,只是“可以”。Can的含义是:可以手工创建100k文件名,并将其放入手动创建的目录中,以便对其进行排序需要很长时间。

@bril,另一方面,文件系统遍历代码显然使用平台的内核系统调用来访问文件系统,因此,如果你绝对想从你的行走代码中挤出一堆纳秒,考虑在他们周围写一个简单的包装器(<代码> OpenDIR)< /COD>,<代码> Read Drand(<代码> >,<代码> CudieDrE()/Pox> POSIX平台)。