Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ReadSectionValues ist extreeeem langsam... (https://www.delphipraxis.net/48978-readsectionvalues-ist-extreeeem-langsam.html)

FriFra 3. Jul 2005 20:00


ReadSectionValues ist extreeeem langsam...
 
Ich muss Daten aus inis auslesen und auswerten... dafür benötige ich u.a. ReadSectionValues.
Nun ist mein Programm extrem langsam und ich hab mir mal folgenden Code zur Kontrolle eingebaut:
Delphi-Quellcode:
windows.beep(8000, 100);
ini.ReadSectionValues(Sections[n], Values);
windows.beep(4000, 100);
Dadurch hab ich dann festgestellt, dass das ganze z.T. bis zu 10 Sekunden dauern kann (die inis sind ziemlich groß ;) )...
ReadSection geht um ein vielfaches schneller, ist jedoch für den speziellen Fall ungeeignet, da ich dann jeden einzelenen Wert mit ReadString auslesen müsste, was noch langsamer ist...

Wenn ich jedoch die komplette Datei z.B. in einen Stream einlese geht dies jedoch in sehr kurzer Zeit... da muss doch etwas an der Geschwindigkeit zu machen sein?

marabu 3. Jul 2005 20:05

Re: ReadSectionValues ist extreeeem langsam...
 
Mehrere Komponenten implementieren ReadSectionValues() - welche verwendest du?

Grüße vom marabu

FriFra 3. Jul 2005 20:09

Re: ReadSectionValues ist extreeeem langsam...
 
TIniFile

marabu 3. Jul 2005 20:49

Re: ReadSectionValues ist extreeeem langsam...
 
Tus nicht. TIniFile ist nur eine Kapsel für die WIN API Routinen GetPrivateProfileString() etc. Am Ende wird tatsächlich jeder einzelne Wert durch einen gesonderten Aufruf ausgelesen. Nimm TMemIniFile. Dahinter steckt eine völlig unabhängige Implementierung, die dadurch auch das 64KB Limit für Steuerdateien sprengt. Schneller sollte es dann auch gehen.

marabu

FriFra 3. Jul 2005 20:51

Re: ReadSectionValues ist extreeeem langsam...
 
Ich habs ;)

Ich verwende jetzt an Stelle von TIniFile einfach TMemIniFile (auch in IniFiles), damit läuf's deutlich schneller.

[Edit]@marabu: Danke ;) ... ich war jetzt auch selbst drauf gekommen[/Edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 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