AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 800 XML-Dateien durchsuchen / Suche langsam beim 1. Mal
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von gullatrulla · begonnen am 14. Jul 2009 · letzter Beitrag vom 17. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
gullatrulla

Registriert seit: 11. Mai 2004
Ort: Malans (Schweiz)
43 Beiträge
 
Delphi 11 Alexandria
 
#1

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

  Alt 14. Jul 2009, 18:35
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 14. Jul 2009, 18:40
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

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

  Alt 14. Jul 2009, 18:42
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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
gullatrulla

Registriert seit: 11. Mai 2004
Ort: Malans (Schweiz)
43 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 15. Jul 2009, 06:33
Ich hatte dies schon befürchtet.
Aber trotzdem Danke an alle.

Gruss Roland
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

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

  Alt 15. Jul 2009, 06:49
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 15. Jul 2009, 07:17
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

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

  Alt 15. Jul 2009, 08:29
Was kosten zwei Stunden programmieren/recherchieren und was kostest eine superschnelle Festplatte (z.B. Western Digital Velociraptor) ?
Ungefähr das Gleiche.
fork me on Github
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#8

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

  Alt 15. Jul 2009, 08:48
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
nichts ist so schön wie man es sich vorstellt
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

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

  Alt 16. Jul 2009, 16:30
Zitat von himitsu:
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
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
IIIMADDINIII
(Gast)

n/a Beiträge
 
#10

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

  Alt 16. Jul 2009, 17:54
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'.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 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