gpt4 book ai didi

.net - 使用 SearchOption.AllDirectories 时 DirectoryInfo.GetFiles 速度缓慢

转载 作者:行者123 更新时间:2023-12-02 14:13:43 29 4
gpt4 key购买 nike

我正在从 .NET 应用程序中搜索适量(~500)个文件夹来查找大量(~200,000)个文件。

我希望使用DirectoryInfo.GetFiles,传入SearchOption.AllDirectories。然而,这种方法似乎比编写我自己的代码来迭代目录并仅传入 searchPattern 执行 GetFiles 慢很多。

相关MSDN info :

  • GetFiles(String)
    从当前目录返回与给定 searchPattern 匹配的文件列表。
  • GetFiles(String, SearchOption)
    从当前目录返回与给定 searchPattern 匹配的文件列表,并使用一个值来确定是否搜索子目录。

有人有过类似的经历吗?

最佳答案

这两个函数实际上因其性能而臭名昭著。原因是GetFiles遍历整个目录树并构造一个 FileInfo 的数组对象,然后才将结果返回给调用者。所述数组的构造涉及大量内存分配(我确信他们在内部使用 List ,但仍然如此),因为无法提前知道条目数。

如果您真的对性能感兴趣,您可以 P/Invoke FindFirstFile/FindNextFile/FindClose ,将它们抽象为IEnumerable<FileInfo>yield FileInfo一次一个。

关于.net - 使用 SearchOption.AllDirectories 时 DirectoryInfo.GetFiles 速度缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1199732/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com