【发布时间】:2013-01-16 14:53:21
【问题描述】:
我编写了一个示例应用程序来调试枚举文件的问题。
使用本地路径(例如 C:\Data\MAN)枚举目录比使用 UNC 路径(例如 \\MACHINENAME\man)枚举共享目录快得多。即使这些路径都指向本地机器上的同一个目录。
对于 72000 个文件,这大约需要 10 秒:
DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\Data\MAN");
FileInfo[] fileInfoTest = directoryInfo.GetFiles("*.*",
SearchOption.AllDirectories);
对于 72000 个文件,这大约需要 2 分钟:(其中 \\MACHINENAME\man 是共享文件夹 C:\Data\MAN)
DirectoryInfo directoryInfo = new DirectoryInfo(@"\\MACHINENAME\man");
FileInfo[] fileInfoTest = directoryInfo.GetFiles("*.*",
SearchOption.AllDirectories);
在使用 UNC 路径时是否会出现这样的开销?
【问题讨论】:
-
@Zarathos 非常有用,虽然我不确定它是否完全回答了这个问题。例如,它周围有没有?
-
部分问题在于,除非您采取特殊步骤,否则 UNC 需要在每次连接时重新进行身份验证,因此您需要为每次操作付出大量安全开销。为避免重新验证成本,请在开始操作之前建立与 UNC 的持久连接。