JFV*_*JFV 5 vb.net enumeration file .net-3.5 winforms
有谁知道通过目录和子文件夹进行枚举以收集枚举中的所有文件的更快方法?这就是我现在所拥有的:
Public Shared allFiles() As String
allFiles = Directory.GetFiles(<ServerLocation>, "*.*", SearchOption.AllDirectories)
Run Code Online (Sandbox Code Playgroud)
谢谢!JFV
编辑:我正在从服务器位置枚举这些文件。我不知道这是否会改变这个问题的观点。感谢迄今为止所有的投入!
简短回答:
如果此代码在功能上对于您的项目来说是正确的,并且您尚未证明它是探查器的问题,那么请勿更改它。继续使用功能正确的解决方案,直到证明它很慢。
长答案:
这段特定代码的快慢取决于很多因素。其中许多取决于您运行的特定机器(例如硬盘驱动器速度)。看看涉及文件系统而不涉及其他任何内容的代码,很难以任何程度的确定性说“x 比 y 快”。
在这种情况下,我只能真正评论一件事。此方法的返回类型是 FileInfo 值的数组。数组需要连续的内存,非常大的数组可能会导致堆中出现碎片问题。如果你有非常大,则可能会导致堆碎片和间接性能问题。
如果这确实是一个问题,那么您可以 PInvoke 进入 FindFirstFile / FindNextFile 并一次获取它们。结果可能会导致 CPU 周期的功能变慢,但内存压力会较小。
但我必须强调,在解决这些问题之前,你应该证明这些是问题。