Я выполнил следующий тест, и, по крайней мере, на моем ПК времена примерно такие же:
static void TestExists()
{
Stopwatch sw = Stopwatch.StartNew();
for ( int i = 0; i < 1000; i++ )
{
if ( !File.Exists( @"c:\tmp\tmp" + i.ToString() + ".tmp" ) )
Console.WriteLine( "File does not exist" );
}
Console.WriteLine( "Total for exists: " + sw.Elapsed );
sw = Stopwatch.StartNew();
for ( int i = 0; i < 1000; i++ )
{
if ( File.Exists( @"c:\tmp\tmp_" + i.ToString() + ".tmp" ) )
Console.WriteLine( "File exists" );
}
Console.WriteLine( "Total for not exists: " + sw.Elapsed );
}
Результаты были следующими: (каждый прогон немного отличается, но примерно одинаков):
Total for exists: 00:00:00.0717181
Total for not exists: 00:00:00.0824266
Но по всей сети (от локальной сети до сервера на расстоянии одного шага) я обнаружил, что тест несколько медленнее, когда файлы действительно существуют. Я понюхал его, и в каждом направлении был только один пакет SMB.
Total for exists: 00:00:02.4028708
Total for not exists: 00:00:00.6910531