hallo,
in einer Umgebung wie folgt:
Firebird 1.5
Delphi 6.0
Win XP pro
soll eine ASCI-Datei eingelesen und interpretiert werden.
Vormals wurde dies mit einem Clientdataset auf xml- Ebene gemacht.
Die Performance war aktzeptabel, wenn auch nicht berauschend. Lag scheinbar an der Dateigrösse.
Jetzt wurde Interbase bemüht. Als Beispiel ist eine Datei mit ca. 50.000 Datensätzen einzulesen. Es wird direkt von der Platte gelesen (Textfile, readln). Nach 100 Datensätzen wird ein Commitretaining abgesetzt, nach 1000 Datensätzen ein Commit.
Bufferchunks wurden auf 1024 belassen.
Mit der Anzahl der eingelesenen Datensätze geht die Performance immer weiter zurück. Irgendwann scheint ein Buchhalter am Werk zu sein.
Ich glaube nicht, dass ich den Speicher mit dynamisch erzeugten Variablen (Stringlist, inifiel oder so) vollmülle. Es werden nur ganz normale Stringoperationen ausgeführt.
Hänge ich mehrer Dateien zusammen, kommt es irgendwann zu der Meldung 'Nicht genug Speicher'
Was läuft hier falsch. Könnt Ihr mir helfen?
Gruß
Peter
in einer Umgebung wie folgt:
Firebird 1.5
Delphi 6.0
Win XP pro
soll eine ASCI-Datei eingelesen und interpretiert werden.
Vormals wurde dies mit einem Clientdataset auf xml- Ebene gemacht.
Die Performance war aktzeptabel, wenn auch nicht berauschend. Lag scheinbar an der Dateigrösse.
Jetzt wurde Interbase bemüht. Als Beispiel ist eine Datei mit ca. 50.000 Datensätzen einzulesen. Es wird direkt von der Platte gelesen (Textfile, readln). Nach 100 Datensätzen wird ein Commitretaining abgesetzt, nach 1000 Datensätzen ein Commit.
Bufferchunks wurden auf 1024 belassen.
Mit der Anzahl der eingelesenen Datensätze geht die Performance immer weiter zurück. Irgendwann scheint ein Buchhalter am Werk zu sein.
Ich glaube nicht, dass ich den Speicher mit dynamisch erzeugten Variablen (Stringlist, inifiel oder so) vollmülle. Es werden nur ganz normale Stringoperationen ausgeführt.
Hänge ich mehrer Dateien zusammen, kommt es irgendwann zu der Meldung 'Nicht genug Speicher'
Was läuft hier falsch. Könnt Ihr mir helfen?
Gruß
Peter
Comment