Kurze Antwort:
Wenn dieser Code funktionell richtig für Ihr Projekt ist, und Sie haben nicht bewiesen, es ist ein Problem mit einem Profiler sein dann es nicht ändern. Verwenden Sie weiterhin eine funktional korrekte Lösung, bis Sie nachweisen, dass sie langsam ist.
Lange Antwort:
Wie schnell oder dieses bestimmte Stück Code verlangsamen, hängt von einer Menge ist von Faktoren ab. Viele davon hängen von der spezifischen Maschine ab, auf der Sie laufen (zum Beispiel Geschwindigkeit der Festplatte). Wenn man sich Code anschaut, der das Dateisystem und nichts anderes betrifft, ist es sehr schwierig, "x ist schneller als y" mit einem gewissen Grad an Sicherheit zu sagen.
In diesem Fall kann ich nur eine Sache wirklich kommentieren. Der Rückgabetyp dieser Methode ist ein Array von FileInfo-Werten. Arrays erfordern zusammenhängenden Speicher und sehr große Arrays können Fragmentierungsprobleme in Ihrem Heap verursachen. Wenn Sie extrem große Verzeichnisse haben, die Sie lesen, könnte dies zu Heapfragmentierung und indirekt zu Leistungsproblemen führen.
Wenn sich herausstellt, dass es sich um ein Problem handelt, können Sie PInvoke in FindFirstFile/FindNextFile starten und nacheinander abrufen. Das Ergebnis wird wahrscheinlich langsamer in den CPU-Zyklen sein, aber weniger Speicherdruck haben.
Aber ich muss betonen, dass Sie diese Probleme vor Ihnen beheben müssen sie beweisen.
+1 Viel besser ausgedrückt als ich konnte –
Doch zur gleichen Zeit, jeder, der in einem großen Verzeichnis alle Dateien auflisten mit .NET weiß versucht hat, dass es sich um eine Leistung Problem. Listing 1000 Ordner Namen, nur die Ordnernamen, kann fast eine ganze Sekunde dauern. –