Was ist der Schnellste Weg, um das löschen von Dateien in einem Verzeichnis? (Außer bestimmte Datei-Erweiterung)
Ich gesehen haben, Fragen wie Was ist der beste Weg, um ein Verzeichnis leer?
Aber ich muss wissen,
was ist der Schnellste Weg, um das löschen aller Dateien innerhalb des Verzeichnisses, mit Ausnahme der .zip
Dateien gefunden.
Riecht wie linq hier... oder was?
Sagen Schnellste Weg ist, ich meine die Schnellsten Ausführungszeiten.
Welche Sprache/OS machst du das?
Ich glaube, dass C#/LINQ-tags sind ausreichende @Eli
LINQ wird nicht schneller als jede andere Methode; es hat noch auflisten der Dateien irgendwie. Der Flaschenhals ist deine Festplatte, nicht auf den code verantwortlich für das senden der Anfrage.
Ich glaube, dass C#/LINQ-tags sind ausreichende @Eli
LINQ wird nicht schneller als jede andere Methode; es hat noch auflisten der Dateien irgendwie. Der Flaschenhals ist deine Festplatte, nicht auf den code verantwortlich für das senden der Anfrage.
InformationsquelleAutor GeorgeBoy | 2011-02-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit .NET 4 können Sie die benifit der smart Weg .NET jetzt parallizing Ihre Funktionen. Dieser code ist die Schnellste Weise, es zu tun. Diese Skalen mit Ihren zahlen der Kerne auf den Prozessor zu.
InformationsquelleAutor ceciliaSHARP
Schnellste bitten Sie für die am wenigsten Zeilen code oder die Schnellste Ausführungszeit? Hier ist ein Beispiel für die Verwendung von LINQ mit einer parallelen for-each-Schleife, um Sie zu löschen schnell.
Parallel.ForEach. Gut, laufen Datenträger-Operationen (vor allem HDD-Verfahren) parallel dazu wird wahrscheinlich nur die Dinge verlangsamen. Und "die Schnellste bist du gefragt, für die am wenigsten Zeilen code oder die Schnellste Ausführungszeit?" - es ist eine wirklich seltsame definition von "schnell" (ich meine Zeilen code). Wie lines of code korreliert mit der Geschwindigkeit?
Ich werde laufen ein benchmark nach der Arbeit, aber ich bin auch ziemlich sicher, dass Parallel wird die Dinge verlangsamen. Was bedauerlich ist, durch die Art und Weise, denn ich Liebe die Idee.
InformationsquelleAutor Daniel Knoodle
In der Zeit des Schreibens dieser Antwort keine der vorherigen Antworten verwendeten Verzeichnis.EnumerateFiles (), der Ihnen erlaubt, zu tragen, bei Operationen, auf die Liste der Dateien, während die Liste aufgebaut ist .
Code:
soweit ich weiß, der performance-Gewinn von über AsParallel() sollte nicht signifikant sein(wenn gefunden) in diesem Fall ist aber es machte den Unterschied in meinem Fall.
Verglich ich die Zeit, die es dauert, bis alle löschen aber .zip-Dateien in eine Liste von 4689-Dateien, von denen 10 wurden zip-Dateien mit 1-foreach. 2-parallel-foreach. 3-IEnumerable().AsParallel().ForAll. 4-parallel-foreach-mit IEnumerable().AsParallel() wie oben dargestellt.
Ergebnisse:
1-1545
2-1015
3-1103
4-839
den fünften und letzten Fall war eine normale foreach-mit Verzeichnis.GetFiles()
5-2266
natürlich die Ergebnisse nicht schlüssig , soweit ich weiß tragen auf einer geeigneten benchmarking, die Sie benötigen, um ein ram-Laufwerk statt der HDD .
Hinweis:der performance-Unterschied zwischen EnumerateFiles und GetFiles wird noch deutlicher, wie die Anzahl der Dateien erhöht.
InformationsquelleAutor ψευδή ηχώ
Hier ist plain old C#
Und hier ist LINQ
InformationsquelleAutor Marko