![]() |
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 |
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. |
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 |
Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
Ich hatte dies schon befürchtet.
Aber trotzdem Danke an alle. Gruss Roland |
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. |
Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
Zitat:
- 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 |
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. |
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 |
Re: 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
Zitat:
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: |
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 17:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz