Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Viele Dateien suchen und Informationen abgleichen (https://www.delphipraxis.net/131697-viele-dateien-suchen-und-informationen-abgleichen.html)

Dragon27 29. Mär 2009 10:40


Viele Dateien suchen und Informationen abgleichen
 
Hallo zusammen,

ich habe das Problem, dass ich sehr viele Dateien (ca. 15.000) auf der Festplatte suchen muss (gleicher Typ) und dann diese
mit einer Datenbank abgleichen muss.

Nun habe ich hier im Forum diese Procedure zum suchen verwendet und die Dateien dann gleich in ein Stringgrid geschrieben, danach
habe ich die Informationen im Stringgrid mit der DB abgeglichen (XML).

Nur leider ist das ganze sehr langsam. Also für 14.000 Dateien habe ich rund 30 Min. gebraucht und zum Ende hin ist das Einlesen und Vergleichen dann
immer langsamer geworden.


Ich habe mir nun überlegt, einen Record zu machen und diesen als Array zu deklarieren, dass ich vielleicht Zeit spare wegen dem Stringgrid. Bin mir aber da nicht sicher ob das viel ausmacht.

Könnt Ihr mir einen Verbesserungsvorschlag geben?

Danke!

juergen 29. Mär 2009 11:00

Re: Viele Dateien suchen und Informationen abgleichen
 
Hallo Dragon27,

die Frage ist:
Benötigst du überhaupt eine visuelle Komponente?

Ich würde das Ganze in eine TStringList oder ggf. in TObjectList laden.
Ggf. diese vor deiner Compare-Methode zur DB noch sortieren.

mjustin 29. Mär 2009 11:07

Re: Viele Dateien suchen und Informationen abgleichen
 
Zitat:

Zitat von Dragon27
Ich habe mir nun überlegt, einen Record zu machen und diesen als Array zu deklarieren, dass ich vielleicht Zeit spare wegen dem Stringgrid. Bin mir aber da nicht sicher ob das viel ausmacht.

Wenn die Stringverarbeitung wirklich der Engpass ist (und nicht die DB oder XML Verarbeitung), ist ein TStringBuilder eventuell der schnellste Datentyp für das Einlesen.

http://stackoverflow.com/questions/686413/

http://www.monien.net/blog/index.php...stringbuilder/

Den Text aus dem StringBuilder könnte man dem StringGrid zuweisen (wobei die Zeilen im StringBuilder jeweils ein Zeilenendezeichen haben müssen, sonst stehen die 15K Dateinamen in einer Zeile).

himitsu 29. Mär 2009 13:14

Re: Viele Dateien suchen und Informationen abgleichen
 
XML selber ist auch nicht immer schnell (MSXML ist bei mir sehr langsam :wall: )

Und was das suchen angeht ... zwei Mal ~30.000 Dateien suchen, in eine gemeinsame Liste eintragen (bei mir je auf USB-Stick und Festplatte geht hier in weniger als einer Minute)

wenn dir FindAllFiles (in Verbindung mit TStringList) zu langsam ist, dann such selber und nutze eine bessere Liste.

Christian Seehase 29. Mär 2009 13:27

Re: Viele Dateien suchen und Informationen abgleichen
 
Moin Dragon,

Zitat:

Zitat von Dragon27
... und zum Ende hin ist das Einlesen und Vergleichen dann
immer langsamer geworden.

hast Du dabei mal den Speicherverbrauch kontrolliert?

Das klingt für mich so, als würden immer mehr Objekte angelegt, gefüllt, verarbeitet, aber nicht wieder freigegeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz