que corrió la prueba siguiente, y en mi PC, al menos, los tiempos son casi lo mismo:
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);
}
los resultados fueron en la línea de lo siguiente (cada ejecución es ligeramente diferente, pero casi el mismo):
Total for exists: 00:00:00.0717181
Total for not exists: 00:00:00.0824266
pero través de una red (en la LAN a un servidor de un salto de distancia), encontré que la prueba sea un poco más lento cuando los archivos realmente existieron. Lo olí y solo había un paquete SMB en cada dirección.
Total for exists: 00:00:02.4028708
Total for not exists: 00:00:00.6910531
Indeed - comparar con la 'Lista .Contains'. –
Considere un archivo que existe pero el usuario no tiene acceso a él. ¿No sería el flujo igual que si el usuario tuviera? es decir: obtener un puntero al archivo y comprobar los permisos? ¿O tal vez los permisos impiden encontrar el archivo para comprobar los permisos y parece una lista vacía?o lo mismo que está describiendo se produce al verificar los permisos? empezando a tener un poco de sentido, supongo. Thx –
Sí, los permisos son otra colección más para buscar. Si encuentra lo que está buscando, puede darse por vencido inmediatamente, mientras que para concluir que no puede encontrar lo que está buscando, tendrá que marcar todas las posibilidades. –