Я экспериментировал с DirectoryInfo.EnumerateFiles() и нашел этот странный шаблон производительности, который я не могу понять. Если я выполняю несколько последовательных перечислений, каждое последующее перечисление занимает больше времени, чем предыдущее, на значительное количество времени. Это странно. Но то, что даже странно, это то, что если я поместил несколько запросов в цикл for, то с каждой итерацией время поиска будет сброшено. Вот мой метод и мои результаты:Weird DirectoryInfo.EnumerateFiles() шаблон производительности?
static int i;
static void Main(string[] args)
{
for (int j = 0; j < 15; j++)
{
var sw = new System.Diagnostics.Stopwatch();
i = 0;
sw.Start();
EnumerateFiles();
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());
i = 0;
sw.Start();
EnumerateFiles();
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());
i = 0;
sw.Start();
EnumerateFiles();
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());
i = 0;
sw.Start();
EnumerateFiles();
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());
Console.WriteLine("====================================");
}
Console.ReadLine();
}
private static void EnumerateFiles()
{
foreach (var item in new System.IO.DirectoryInfo("d:\\aac").EnumerateFiles("*.*", System.IO.SearchOption.AllDirectories))
{
i++;
}
}
И результаты:
Total files: 5386
00:00:00.2868080
00:00:00.5720745
00:00:00.8443089
00:00:01.1315225
====================================
00:00:00.2729422
00:00:00.5275304
00:00:00.8259863
00:00:01.0712183
====================================
00:00:00.2457264
00:00:00.4642581
00:00:00.6948112
00:00:00.9178203
====================================
00:00:00.2198666
00:00:00.4503493
00:00:00.6717144
00:00:00.8951899
====================================
00:00:00.2391378
00:00:00.4602923
00:00:00.6767395
00:00:00.9082248
====================================
//last one (i == 15):
00:00:00.2138526
00:00:00.4437129
00:00:00.6626495
00:00:00.8794025
Кто-нибудь знает, почему это происходит? Теперь ответ на вопрос о том, почему я выполняю четыре поиска на одной итерации, я: я пытался кое-что попробовать, измерил производительность и наткнулся на эту аномалию, и теперь я хочу знать, почему это так.
Да, я смущен Я не смотрел в e StopWatch вещь ... Спасибо! – user5080246