我们在使用通配符模式遍历目录查找文件时遇到了意外的性能问题。
我们有180个包含10,000个文件的文件夹。使用命令行搜索
我们最初尝试使用
使用分析工具对我们的代码进行分析表明,绝大部分执行时间都花费在这些调用上。
我们的代码基于以下博客文章: 我们发现这个过程比较慢,所以更新了
我们有180个包含10,000个文件的文件夹。使用命令行搜索
dir <pattern> /s
几乎瞬间完成(<0.25秒)。但是,从我们的应用程序中进行相同的搜索需要3-4秒钟。我们最初尝试使用
System.IO.DirectoryInfo.GetFiles()
和 SearchOption.AllDirectories
,现在尝试使用 Win32 API 调用 FindFirstFile()
和 FindNextFile()
。使用分析工具对我们的代码进行分析表明,绝大部分执行时间都花费在这些调用上。
我们的代码基于以下博客文章: 我们发现这个过程比较慢,所以更新了
GetFiles
函数,将谓词替换为string
搜索模式。
有人可以解释一下我们的方法可能出了什么问题吗?
dir /s
命令(已经相应地更新了我的帖子)。 - Richard Ev