Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal (https://www.delphipraxis.net/137116-800-xml-dateien-durchsuchen-suche-langsam-beim-1-mal.html)

gullatrulla 14. Jul 2009 18:35


800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
 
Hi Delphi-Folks

Ich soll für einen Kunden eine Möglichkeit schaffen ca. 800 XML-Files
zu durchsuchen. Die Suche soll aufgrund eines Filters durchgeführt werden,
welcher der Kunde definiert.

Da die XML-Files immer gleich aufgebaut sind und ich weiss, dass die
zu suchenden Informationen immer an der 4-6 Zeile des XML-Files stehen
habe ich eine Suchroutine mittels "AssignFile" geschrieben.

Diese Routine ist so schnell, dass die 800 XML-Files in weniger
als 1 Sekunde durchsucht sind.
Aber (und jetzt kommt es). Die Suche ist nur so schnell, wenn die Dateien
vorher schon einmal "berührt" wurden.
Wenn der PC nach einem Neustart das erste Mal diese Routine ausführt vergehen
bis zu 15 Sekunden für die gleiche Routine welche sonst weniger als 1 Sekunde braucht.

Nicht dass 15 Sekunden ein sooooooooo grosses Problem darstellen. Jedoch ist es für den Kunden
lästig, dass die 1. Abfrage nach einem Neustart immer so lange dauert.

Ich habe z.B. schon versucht die Dateien bei Programmstart mittels Filelistbox zu
"initialisieren". Oder die Dateien beim Programmstart mittels TFileStream zu "initialisieren".
Ich dachte, dass dies den 1. Zugriff verschnellern würde. Ohne Erfolg.

Hat irgend jemand von Euch eine Idee wie dieses Problem lösbar wäre.

Herzlichen Dank für Eure Hilfe
Roland

himitsu 14. Jul 2009 18:40

Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
 
Das wirst du nicht ändern können, denn beim ersten Mal wird alles von der Festplatte gelesen
und beim 2. Mal sind die Dateien schon in der WindowsFileCache, also im RAM.

Jenachdem wie groß die Dateien sind und wieviel RAM du frei hast, wird da von Windows so einiges im RAM zwischengespeichert (siehe Systemcache im Task-Manager).


Und egal was du machst, die Dateien und das Verzeichnis müssen immer erstmal von der Festplatte geladen werden, was nicht unbedingt schnell ist.

mirage228 14. Jul 2009 18:42

Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
 
Ich vermute, dass Deine Suchanfrage nach den Dateien nach der ersten Suchen vom Betriebssystem und/oder der Festplatte gecached wird... Daher wird es beim ersten Mal wohl immer so lange dauern...

Vielleicht läßt sich ja die Dateianzahl auf andere Weise verringern oder die Option "Das Laufwerk für schnelle Dateisuche indizieren" unter Windows aktivieren...


Viele Grüße

gullatrulla 15. Jul 2009 06:33

Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
 
Ich hatte dies schon befürchtet.
Aber trotzdem Danke an alle.

Gruss Roland

alzaimar 15. Jul 2009 06:49

Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
 
Schreib Dir ein Dummyprogramm, das die Dateien einfach nur einliest. Dieses Schwachsinnsprogramm packst Du in den Autostart-Ordner. Merkt kein Schwein und dein Kunde ist zufrieden.

Macht Microsoft mit den Office-Paketen genauso.

himitsu 15. Jul 2009 07:17

Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
 
Zitat:

Zitat von alzaimar
Macht Microsoft mit den Office-Paketen genauso.

Und genau deßhalb fliegen derartige Programme bei mir sofort aus'm Autostart

- es verlangsamt den Start des PCs (machen das 2 Programme á 15 Sekunden, kann da insgesammt mal locker 'ne Minute draus werden, wenn diese Programme gleichzeitig auf der Platte rumkramen, wärend andere Programme auch noch starten wollen)
- und ich hätte gern meinen RAM für die Anwendungen und nicht vorwiegend als Cache

sx2008 15. Jul 2009 08:29

Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
 
Was kosten zwei Stunden programmieren/recherchieren und was kostest eine superschnelle Festplatte (z.B. Western Digital Velociraptor) ?
Ungefähr das Gleiche.

DerDan 15. Jul 2009 08:48

Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
 
Hallo,


Ich denke du musst dass deinem Kunden das nur anderstrum verkaufen.
Und sagen das das einlesen eigentlich immer 15 Sekunden dauert und es dein Programm beim zweiten mal halt in 2 sekunden schafft.

Auch könntest du dir überlegen, die Suchergebnisse zu speichern.
Diese Informationsdatei wird nur dann neu generiert, wenn sich zwischenzeitlich eine der XML Dateien neuer ist.


das macht windows mit dem indizieren auch so ähnlich.

mfg


DerDan

alzaimar 16. Jul 2009 16:30

Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
 
Zitat:

Zitat von himitsu
Zitat:

Zitat von alzaimar
Macht Microsoft mit den Office-Paketen genauso.

Und genau deßhalb fliegen derartige Programme bei mir sofort aus'm Autostart

Klar, Dir müsste man das ja auch nicht so unterjubeln und DU bist ja auch nicht der Kunde.

Eine bessere Idee habe ich nicht, einen beratungsresistenten Kunden zufrieden zu stellen. Wenn Erklärungen nicht helfen, bleibt nur die Verarsche. Er schreit ja regelrecht danach :mrgreen:

IIIMADDINIII 16. Jul 2009 17:54

Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
 
wenn deon progrann nur zum durchsuchen sieser dateien ist kannst du ja werend des startens die sdateien einlesen. aber nicht im formcreate sondern zum beispiel in einem teimer der jede 1 milis.
10 dateien einließt oder so. diesen teimer startest du im formcreate. dann liest dein programm die dateien ein während der user z.b. die filter eingibt. natürlich musst du noch einige sachen beachten z.b. wenn der user suchen klickt befor alle dateien geladen sind. dann kannste als beispiel ein kleines fenster anzeige 'dateien werden geladn'.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:54 Uhr.
Seite 1 von 2  1 2      

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