Mehrere Dateien per parallel-task lesen / beste Methode?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Mehrere Dateien per parallel-task lesen / beste Methode?

    Hallo!

    Ich hab vor mehrere Dateien gleichzeitig in einem Parallel-Task zu lesen..das sind eig. nur einige Bytes von jeder Datei!
    Aber wenn ich z.B. 1000 Dateien auf einmal einlesen muss geht der Festplattenzugriff ja ganz schön quer!
    Wie wäre denn die beste Herangehensweise an sowas?

    Sich z.B. immer nur 5-10 Dateien aus der Liste vornehmen?
    Oder kann man da iwas berechnen von wegen Festplatten-Leistung? (Preis/Leistung) :P

    Weil, die Dateien kommen eig. alle von einer Festplatte und können die 1000er FileCount leicht überschreiten!

    ..aber ich glaub am schnellsten wäre es wohl Datei für Datei nacheinander durchzugehen, oder?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Morrison“ ()

    Hi,

    hab mal so etwas gemacht(Tags lesen bei Audiodateien), habe in einem Thread alle Dateien aufgelistet, einen weiteren Thread gestartet welcher weitere Threads(bis zu 4) verwaltet. In diesen Threads habe ich dann die Tags ausgelesen. Geht so auch bei 15000+ Dateien halbwegs flott, jedenfalls schneller als einzelnd.

    Evtl. lässt sich das auch gut mit Async/Await lösen. Damit habe ich mich bisher aber nur dürftig beschäftigt. Kann sein das man so auch was vergleichbar schnelles hinbekommt oder sogar noch schneller.

    Messen kannst du die Schreib-/Lese-Geschwindigkeit der Festplatte. Kriegt man zwar nicht so genau wie unter Laborbedingngen sind aber brauchbare Ergebnisse. Schreib einfach eine z.B. 1GB Datei auf Platte, mess die Zeit dann weisst du mehr. Danach kannste die Datei wieder einlesen und Zeit messen.
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    @Morrison Vielleicht packst Du die Namen alle in eine List(Of String) und überlässt das ganze per Parallel.For() dem System selbst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!