A simple performance test for comparing direct file property access or creating a FileInfo object.
The results show that if you are accessing more then one file property FileInfo is the way to go otherwise File.GetCreationTime and related methods have the same performance hit.
100 iterations of c:\windows
directValues –> 00:00:00.2900065
infoValues –> 00:00:00.1611554
void Main()
{
var folder = "c:\\windows";
var files = Directory.GetFiles(folder, "*.*", SearchOption.TopDirectoryOnly);
var stopwatch = new Stopwatch();
var directValues = 0l;
var infoValues = 0l;
for (int i = 0; i < 100; i++)
{
stopwatch.Restart();
stopwatch.Start();
foreach (var file in files)
{
var lastWriteTime = File.GetLastWriteTime(file);
var creationTime = File.GetCreationTime(file);
}
stopwatch.Stop();
directValues += stopwatch.ElapsedTicks;
stopwatch.Restart();
stopwatch.Start();
foreach (var file in files)
{
var info = new FileInfo(file);
var lastWriteTime = info.LastWriteTime;
var creationTime = info.CreationTime;
}
stopwatch.Stop();
infoValues += stopwatch.ElapsedTicks;
}
"100 iterations of c:\\windows".Dump();
TimeSpan.FromTicks(directValues).Dump("directValues");
TimeSpan.FromTicks(infoValues).Dump("infoValues");
}