UNC路径似乎显着减慢文件枚举

时间:2013-01-16 14:53:22

标签: c# unc

我编写了一个示例应用程序来调试枚举文件的问题。

枚举具有本地路径的目录(例如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路径时预计会产生这笔开销吗?

1 个答案:

答案 0 :(得分:0)

这是一个老问题,评论似乎已经到了一半,但没有理由不尝试尝试回答这个问题。这里的文件计数是问题的一部分,其中有72,000个。那是怎么回事?

好吧,正如已经回答的here,它主要归结为在本地路径上处理UNC路径时使用的不同进程之间的上下文切换,特别是调用进程和SMB客户端+服务器进程。这归结为:直接更快。如果它是本地资源,请不要通过UNC,显然,涉及的文件越多,它就越慢。