ネットワークドライブ文字Wにマップされたファイルサーバーを持っています。これには732のメインフォルダとサブフォルダとたくさんのファイルがあります。私はこのドライブに仮想ディレクトリをマップし、それを "Documents"と名づけました。GetFiles/GetDirectoriesとEnumerateDirectories/EnumerateFiles UNC /仮想ディレクトリのパフォーマンスペナルティ
ここでは、「最終」が含まれているフォルダのみを検索するのにかかる時間を確認したいと思います。私はまだWebアプリケーションではないコンソールアプリケーションを作成し、私に結果を非常に非常に遅く希望していない与えたコードの下に書く。これは私が唯一の最初の実行時に5分と秒で6分で、ファイル名ではないフォルダを与えたコード
DateTime startdatetime = DateTime.Now;
var dirs = from dir in
Directory.EnumerateDirectories("W:\\", "*Final*", SearchOption.AllDirectories)
select dir;
foreach (var dir in dirs)
{
Console.WriteLine(dir);
}
DateTime EndDate = DateTime.Now;
TimeSpan t = EndDate - startdatetime;
Console.WriteLine(t.Minutes);
Console.ReadLine();
の下に見つけてください。私はフォルダのみを取得するために使用 古いコードは、上記のコードは、6~7分で私のフォルダのリストを与えた
DateTime startdatetime = DateTime.Now;
string[] dirs =
Directory.GetDirectories("W:\\", "*Final*", SearchOption.AllDirectories);
foreach (var dir in dirs)
{
Console.WriteLine(dir);
}
DateTime EndDate = DateTime.Now;
TimeSpan t = EndDate - startdatetime;
Console.WriteLine(t.Minutes);
Console.ReadLine();
ました。 コードの上にファイルとフォルダを結合すると12分で結果が得られます。それはウェブ上で大きなパフォーマンスペナルティです。
この罰金を減らす方法を知っている人はいますか?私はここで立ち往生している。
いくつの結果がありますか? 'Console.WriteLine(dir);'を削除するとどれくらいかかりますか? –
ドライブはどのくらいの頻度で変更されますか?なぜ最初のペナルティを取らないと、[FileSystemWatcher](http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.created.aspx)をそのドライブに作成する必要はありませんすべてを常に研究していますか? – Tung
あなたの目標は何ですか? – Gabe