AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IniFile zu langsam

Ein Thema von Neutral General · begonnen am 11. Nov 2005 · letzter Beitrag vom 14. Nov 2005
Antwort Antwort
Seite 2 von 3     12 3      
r4id3n

Registriert seit: 11. Jan 2005
28 Beiträge
 
#11

Re: IniFile zu langsam

  Alt 11. Nov 2005, 20:30
@alzaimar:
Wenn Ini-Dateien aber über 42 kb groß werden, werden diese unendlich langsam! Das ist ein bekanntes Problem!
Das Zauberwort heißt wirklich nur TBigIni....
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#12

Re: IniFile zu langsam

  Alt 11. Nov 2005, 20:42
Also falls es euch was hilft: Ich habe da mal so ein Testprogramm geschrieben und mit GetTickCount die Zeit gemessen wie lange eine Sicherung von Daten dauert. Die Rahmenbedingungen waren:

1. Erstellungen von 1000 Dateien
2. Inhalt: jeweils 4 Strings, 4 Integer- und 4 Boolean-Werte
3. Gemessen wurde mit GetTickCount


Die dabei benötigten Zeiten waren:

indizierte Dateien (Type of...): ~ 3000ms
INI-Dateien (IniFile.WriteString): ~ 3000ms
"Normale" Dateien(writeln(bla...)): 150ms

Ich habe damit also nur die Schreibmehtode getestet, nicht die Lesemethode!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#13

Re: IniFile zu langsam

  Alt 11. Nov 2005, 21:58
@s.h.a.r.k.

1. Kannst du getrost streichen, denn es bringt nichts 1000 Dateien anzulegen und diese mit minimalen
Inhalt zu füttern. Wie groß sind die Dateien? Sicherlich nicht größer als 512 Byte, oder?

Wenn du wesentlich mehr Einträge und zudem nur eine Datei anlegst, erhälst du ein genaueres Ergebnis.

Das musste mal gesagt werden
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: IniFile zu langsam

  Alt 11. Nov 2005, 23:10
Sind indizierte Dateien typisierte Dateien?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#15

Re: IniFile zu langsam

  Alt 11. Nov 2005, 23:38
HI!

Wenn man nach dem (type of) in Klammer geht wohl schon


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: IniFile zu langsam

  Alt 12. Nov 2005, 09:05
Zitat von r4id3n:
@alzaimar:
Wenn Ini-Dateien aber über 42 kb groß werden, werden diese unendlich langsam! Das ist ein bekanntes Problem!
Das Zauberwort heißt wirklich nur TBigIni....
[edit]Das ist kein Problem, sondern in der Tatsache begründet, das TIniFile alle Änderungen per definitionem sofort auf die Platte schreibt. "It's not a bug, it's a feature".[/edit].
Und das Zauberwort heisst sicherlich nicht TBigIni, sondern z.B. 'TFileStream' oder Ähnliches.
  • TIniFile = Richtig langsam
    TBigIniFile = Na ja
    TFileStream = Schnell
Ich hab mal ein Testprogramm (5000 Sections mit je 10 Werten) geschrieben. Hier meine Ergebnisse:
  • BigIni File : 14001 ms
    FastIniFile : 780 ms
    Filestream : 641 ms
TMemIniFile und TIniFile scheiden aus, denn sie sind immer noch nicht fertig .

FastIniFile hab ich eben selbst geschrieben (es basiert auf einer TStringdictionary). Filestream schreibt die Werte als 'Section-Name=Value' in die Datei.

Natürlich ist TBigIni ausreichend, aber was ich meinte, ist das es schon befremdlich ist, sich bei 3GHZ-Rechnern über eine Performance von 1000mszu freuen, um lächerliche 10000 Strings abzuspeichern. Und wie man oben sieht, ist TBigIniFile dann auch irgendwann mal Schrott.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#17

Re: IniFile zu langsam

  Alt 12. Nov 2005, 09:11
Zitat von alzaimar:
Und wie man oben sieht, ist TBigIniFile dann auch irgendwann mal Schrott.
Inifiles sind für solche Datenmengen ja auch einfach nicht gedacht. Und noch zur Ergänzung: eine normale INI Datei darf mit TIniFile nicht grösser als 64kB haben, was bislang noch nicht erwähnt wurde.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#18

Re: IniFile zu langsam

  Alt 12. Nov 2005, 09:17
Ich würde ja empfehlen solche speziellen Daten binär in eine Datei abzulegen. Sollte das schnellste sein und auch wieder gut auslesbar sein. (Außerdem spart man Platz)
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: IniFile zu langsam

  Alt 12. Nov 2005, 09:29
Hab ich (siehe 'Filestream'). Das ist so gut wie binär, denn irgendwie muss man ja auch die Schlüsselinformation (Section, Name) ablegen. Der zusätzliche Overhead, um die Sachen auch schnell wiederzufinden (TStringDictionary) fällt aber sowieso nicht ins Gewicht.

Man muss dazusagen, das TBigIni ganz nett ist, aber (so wie es der Autor schreibt) nicht optimal. Immerhin schreibt es nicht jede Änderung direkt auf die Platte, wie das TIniFile (gottseidank) tut. Aber man sieht eben auch, das die von Borland bereitgestellten Klassen alles Andere als optimal implementiert sind. Selbst die THashedStringList, die beim TMemIniFile zum Einsatz kommt (wenn ich nicht irre), ist nicht berauschend.

TBigIni benutzt einen einfachen Trick, um schnell zu werden: Es geht zurecht von der Annahme aus, das man die [Section,Name] Tupel nicht wahllos verwendet, sonder i.A. alle Werte einer Section hintereinander schreibt, es entfällt dann die Suche nach den Sections. So genau hab ich mir den jetzt aber nicht angeschaut.

Grundsätzlich ist es aber wirklich so, das man Ini-Files nicht für Tausende von Einstellungen nehmen sollte. Ich würde das dann auch einfach in eine Collection packen und die dann wegstreamen, schon der Ästhetik wegen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#20

Re: IniFile zu langsam

  Alt 12. Nov 2005, 11:05
Guut. Also eigentlich reicht mir die TBigIniFile aus aber:

Ich würde gerne mal die TFastIniFile von r4id3n testen und ich wäre euch dankbar wenn jemand mir mal einen Ansatz mit ein bisschen Quellcode gibt, wie ich das mit einem Filestream machen kann
Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 09:11 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