Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Schnelles Suchen nach Dateien

  Alt 25. Jan 2009, 10:48
Hallo,

einige Dinge sind mir aufgefallen:

1. Du verwendest für den Dateinamen einen ShortString - warum? Beim Übertragen in den Record müssen so immer 256 Bytes bewegt werden, während bei der Verwendung dynamischer Strings wahrscheinlich nur ein Referenzzähler erhöht werden muss.

2. Bei jedem Vergleich der Extensions rufst du die Funktion ExtractFileExt auf, obwohl sich die Extensions in der Liste während der Suche nicht ändern. Vielleicht wäre es günstiger, für die Liste die Sortierung einzuschalten und mittels TStringList.IndexOf zu suchen. Damit hättest du gleichzeitig das Problem der Groß-/Kleinschreibung erschlagen.
Falls du an deiner Suchschleife festhalten möchtest, solltest du sie übrigens nach einem Fund abbrechen. Warum weiter suchen, wenn die Datei schon als "bekannt" identifiziert wurde?

3. Wenn die Routine ohne Maske aufgerufen wird, erzeugt sie intern eine Stringliste. Dieses Objekt wird aber nie freigegeben.

Diese Hinweise werden sicher nicht alle Performanceprobleme lösen, aber vielleicht sind dennoch nützlich. An FindFirst/FindNext wirst du kaum vorbeikommen.

Ich habe deinen letzten Code übrigens einmal (unverändert) auf meine externe Festplatte losgelassen. Nach 145 Sekunden hattte er knapp 100.000 Dateien gefunden (Core2Duo, 2.4 GHz).

Gruß Hawkeye
  Mit Zitat antworten Zitat