vb.net - 枚举包括子文件夹在内的所有文件的快速方法

标签 vb.net winforms .net-3.5 file enumeration

有谁知道通过目录和子文件夹枚举以收集枚举中的所有文件的更快方法?这就是我现在所拥有的:

Public Shared allFiles() As String
allFiles = Directory.GetFiles(<ServerLocation>, "*.*", SearchOption.AllDirectories)

谢谢!
JFV

编辑:我正在从服务器位置枚举这些文件。我不知道这是否会改变这个问题的观点。感谢您到目前为止的所有投入!

最佳答案

简短的回答:

如果此代码对于您的项目在功能上是正确的,并且您还没有证明它是分析器的问题,那么不要更改它。继续使用功能正确的解决方案,直到您证明它很慢。

长答案:

这段特定代码有多快或多慢取决于 拍品 的因素。其中许多将取决于您运行的特定机器(例如硬盘驱动器速度)。查看仅涉及文件系统的代码,很难肯定地说“x 比 y 快”。

在这种情况下,我只能评论一件事。此方法的返回类型是一个 FileInfo 值数组。数组需要连续的内存,非常大的数组可能会导致堆中出现碎片问题。如果您有 您正在阅读的大型目录可能会导致堆碎片化和间接性能问题。

如果结果证明这是一个问题,那么您可以 PInvoke 进入 FindFirstFile/FindNextFile 并一次获取一个。结果可能会在 CPU 周期中在功能上变慢,但内存压力会更小。

但我必须强调,在修复它们之前,您应该证明这些是问题。

关于vb.net - 枚举包括子文件夹在内的所有文件的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1054234/

相关文章:

c# - 删除字典中所有低于指定值的条目的有效方法

c# - 如何附加不是来自数据库的 Entity Framework 对象?

vb.net - 如何在vb.net中处理Oracle长字符串

c# - 检测 OpenFileDialog 何时返回下载的 URL/URI

vb.net - Ms-Access:连接 3 个表

C# ObservableCollection 添加报错

c# - 在事件处理程序的调用者退出后运行代码

c# - 在 TabControl 中对 TabPages 进行分组

c# - 从流创建字节数组

XML 转义字符