| Autor |
Beitrag |
Calyptus
      
Beiträge: 386
Win Xp Prof
D3, D6 Pers, D7 Ent
|
Verfasst: Sa 04.06.05 13:21
Hallo,
ich habe bei meinem Programm eine Indexdatei (zur Zeit eine .ini) in der ca 1 Mb Text drin ist. Da diese von meinem Programm mehrmals ausgelesen wird, und dies immer eine Zeit lang dauert, hab ich mir überlegt ob es schneller geht wenn die Daten nicht in der Ini sonder in der Registry liegen.
Wäre das schneller oder sind das sowiso zu viele Daten um sie in die Reg zu schreiben?
_________________ Luft- und Raumfahrtechnik an der Uni Stuttgart
|
|
Terra
      
Beiträge: 307
Windows 7 Ultimate
Delphi® XE3
|
Verfasst: Sa 04.06.05 13:27
Was ist das für ein Text, der 1 MB verbraucht?
Ist es nicht besser, den Text in mehrere Teile aufzuspalten und erst aufzurufen wenn er auch benötigt wird ? Denke mal, das es dann schneller gehen sollte.
Terra
PS: Du wirst kein großen unterschied feststellen ob der Text in der Registry ausgelesen wird oder aus einer Datei, da sich beide Sachen auf der Festplatte befinden und auch erstmal ausgelesen werden müssen.
|
|
wolke
      
Beiträge: 240
|
Verfasst: Sa 04.06.05 13:42
und warum liest du sie nicht einmal ein und arbeitest dann mit den daten direkt, ohne jedesmal die datei zu lesen?
|
|
root_at_localhost
      
Beiträge: 191
|
Verfasst: Sa 04.06.05 13:47
Schreib das dicht in die Reg, es wird nicht schneller ausgelesen und macht nur den PC langsammer. Es gibt eine Klasse fur eine INI-Datei mit Mem-Cache, TMemIniFile oder so. Aber ich denke das Hauptproblem ist das suchen nach den Daten innerhalb der Datei. Vieleicht sagst du uns mal, was du da so viel zu speichern hast, dann finden wir vieleicht was besseres.
|
|
Calyptus 
      
Beiträge: 386
Win Xp Prof
D3, D6 Pers, D7 Ent
|
Verfasst: Sa 04.06.05 14:00
Erstmal danke für eure Antworten.
In der Datei sind alle mp3s die auf dem Rechner gefunden werden. Also ihr Pfad, Index Nummer, Interpret und Titel. HAbs bei einem laufen lassen, der ca 40 GB mp3s hat und da wars dann über 1 Mb groß.
Und im Programm werden sie dann ein Array gelesen und weiter verarbeitet.
//Edit: das einlesen der Ini in den Array ist das was so lange dauert.
_________________ Luft- und Raumfahrtechnik an der Uni Stuttgart
|
|
Terra
      
Beiträge: 307
Windows 7 Ultimate
Delphi® XE3
|
Verfasst: Sa 04.06.05 14:08
Hmmm .. verstehe ...
Also ich würde das Problem mittels XML lösen. Eine Art Datenbank, wo du zuerst nur die Titel auslesen und anzeigen würdest und sobald man ein Titel anwählt die informationen zu dem Titel auftauchen bzw. der Titel abgespielt wird. Ist meiner meinung nach strukturierter. Allerdingst musste die Datei natürlich auch 1x komplett auslesen. Sobald das aber geschehen ist befindet diese sich ja im Speicher und dann sollte es recht flott gehen. Darum am besten ganz am Anfang datei auslesen und mit einem Splashscreen die Zeit überbrücken. Sollte am elegantesten sein.
Terra
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 04.06.05 14:16
Wie lange dauert das einlesen der Infos denn in etwa? Hab nämlich auch mal sowas gemacht, und mir für die Zwecke ein eigenes Dateiformat gebastelt. Bei mir sind ca. 30.000 Files (~160 GB) in einer 6-MB-Datei drin, und ich speichere auch Zusatzinfos wie Albenname, Bitrate, Samplerate, Dateigröße, Dauer, Datum der Erfassung etc.
Das Laden einer solchen Datei dauert ca. 1-2 Sekunden. Wenn Bedarf besteht, poste ich Auszüge aus meiner Klasse Tmp3file.
_________________ We are, we were and will not be.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: So 05.06.05 10:05
Es gibt auch sowas wie TMemDataset. z.b. gabs das mal in der RX Library. Die ist jetzt -glaube ich- bei der JCL, oder? Das sind TDataset Abkömmlinge, die die Daten eben im Speicher halten. Die erwachsenen Vertreter dieser Gattung können die Daten auch speichern / laden.
Dann check mal Jan verhoeven, der hat eine Komponente geschrieben, mit der man mittels SQL Befehlen eine CSV Datei durchsuchen kann. Das wäre IMHO das Ideale für dich. Jan hat auch ne Hompepage ( jansfreeware.com/) und da dann das TjanSQL saugen.
|
|