- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 .NET 应用程序中搜索适量(~500)个文件夹来查找大量(~200,000)个文件。
我希望使用DirectoryInfo.GetFiles
,传入SearchOption.AllDirectories
。然而,这种方法似乎比编写我自己的代码来迭代目录并仅传入 searchPattern
执行 GetFiles
慢很多。
相关MSDN info :
GetFiles(String)
GetFiles(String, SearchOption)
有人有过类似的经历吗?
最佳答案
这两个函数实际上因其性能而臭名昭著。原因是GetFiles
遍历整个目录树并构造一个 FileInfo
的数组对象,然后才将结果返回给调用者。所述数组的构造涉及大量内存分配(我确信他们在内部使用 List
,但仍然如此),因为无法提前知道条目数。
如果您真的对性能感兴趣,您可以 P/Invoke FindFirstFile/FindNextFile/FindClose ,将它们抽象为IEnumerable<FileInfo>
和yield
FileInfo
一次一个。
关于.net - 使用 SearchOption.AllDirectories 时 DirectoryInfo.GetFiles 速度缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1199732/
首先,我已经检查了所有可能的资源以获取示例,但无法找到足够接近的资源来解决此查询(看起来很简单)。我还看到有一个相同但从未在这里解决的问题:Get allDirectories() in Larave
也许这是设计使然,但我希望 C:\位于我的根目录中,即使我已经知道该信息也是如此。 DirectoryInfo Dinfo = new DirectoryInfo(@"C:\"); Directory
这个问题在这里已经有了答案: UnauthorizedAccessException cannot resolve Directory.GetFiles failure [duplicate] (6
我的代码 DirectoryInfo[] dirstring = dir.GetDirectories(SearchTextbox.Text, System.IO.SearchOption.AllD
我正在从 .NET 应用程序中搜索适量(~500)个文件夹来查找大量(~200,000)个文件。 我希望使用DirectoryInfo.GetFiles,传入SearchOption.AllDirec
我是一名优秀的程序员,十分优秀!