【发布时间】:2012-03-13 09:36:39
【问题描述】:
我有一个映射到网络驱动器号 W 的文件服务器。它有 732 个主文件夹和子文件夹以及很多文件。我已将一个虚拟目录映射到此驱动器并将其命名为“文档”。
现在我想检查只找到包含“final”的文件夹需要多少时间。我创建了一个控制台应用程序而不是一个网络应用程序,并编写了下面的代码,这给了我非常慢的结果,这是不希望的。请在下面找到代码
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();
这在第一次运行 5 分钟和第二次运行 6 分钟内只给了我文件夹而不是文件名。 我以前只获取文件夹的旧代码是
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();
上面的代码在 6-7 分钟内给了我文件夹列表。 以上代码组合文件和文件夹在 12 分钟内给出了结果。这在网络上会造成巨大的性能损失。
知道如何减少这个罚款上限吗?我被困在这里了。
【问题讨论】:
-
有多少个结果?删除
Console.WriteLine(dir);需要多长时间? -
驱动器多久更换一次?为什么不接受第一个惩罚,然后在该驱动器上创建一个FileSystemWatcher,这样您就不必不断研究所有内容?
-
有多少个结果?大约 10 个仅用于文件夹。如果删除 Console.WriteLine(dir); 需要多长时间?对于 Directory.etDirectories 相同的 6 分钟,对于 Enumerable 一个 0(因为 enumerable 仅在访问时有效)驱动器多久更换一次?几乎每天。我会看看 FileSystemWatcher 我的目标是什么?我的目标是提供一个搜索文本框,用户输入任何名称,然后我搜索文件夹和文件并将它们列在izwebfilemanager.com
-
您应该创建一个服务来将数据转储到数据库中。
标签: c# asp.net performance directory