Eu respondo a minha própria pergunta: Sim, definitivamente é mais lento.
Eu escrevi um C# Console Application
que cria muitos arquivos vazios em uma pasta e, em seguida, acessa-os aleatoriamente.
Aqui estão os resultados:
10 files in a folder : ~26000 operation/sec
1.000.000 files a in folder : ~6000 operation/sec
Aqui está o código-fonte:
List<string> files = new List<string>();
Console.WriteLine("creating files...");
for (int i = 0; i < 1000 * 1000; i++)
{
string filename = @"C:\test\" + Guid.NewGuid().ToString();
using (File.Create(filename));
files.Add(filename);
}
Console.WriteLine("benchmark...");
Random r = new Random();
Stopwatch sw = new Stopwatch();
sw.Start();
int count = 0;
while (sw.ElapsedMilliseconds < 5000)
{
string filename = files[r.Next(files.Count)];
string text = System.IO.File.ReadAllText(filename);
count++;
}
Console.WriteLine("{0} operation/sec ", count / 5);