ファイルの列挙に関する問題をデバッグするためのサンプルアプリケーションを作成しました。
ローカルパス(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パスを使用する場合、この量のオーバーヘッドが予想されますか?