ich den folgenden Test lief, und auf meinem PC zumindest sind die Zeiten, in etwa gleich:
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);
}
die Ergebnisse entlang der Linien des folgenden waren (jeder Lauf ist etwas anders, aber etwa gleich):
Total for exists: 00:00:00.0717181
Total for not exists: 00:00:00.0824266
aber über ein Netzwerk (auf dem LAN zu einem Server einen Sprung entfernt), ich den Test gefunden werden ein bisschen langsamer, wenn die Dateien tatsächlich existierten. Ich schnüffelte daran und es gab nur ein SMB-Paket in jeder Richtung.
Total for exists: 00:00:02.4028708
Total for not exists: 00:00:00.6910531
In der Tat - im Vergleich zu 'Liste .Contains'. –
Betrachten Sie eine Datei, die existiert, aber der Benutzer hat keinen Zugriff darauf. Wäre der Fluss nicht der gleiche wie wenn der Benutzer hätte? zB: Holen Sie einen Zeiger auf die Datei und prüfen Sie die Berechtigungen? Oder verhindern die Berechtigungen möglicherweise das Auffinden der Datei, um Berechtigungen zu überprüfen, und erscheinen als leere Liste?oder das gleiche, was Sie beschreiben, tritt beim Überprüfen von Berechtigungen auf? Ich denke, dass es ein bisschen Sinn macht. Thx –
Ja, Berechtigungen sind eine weitere Sammlung, nach der gesucht werden soll. Wenn Sie finden, was Sie suchen, können Sie sofort aufgeben, während Sie zu dem Schluss kommen, dass Sie nicht finden können, was Sie suchen, Sie müssen alle Möglichkeiten auschecken. –