Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
18. Jul 2016
Danke, Stahli
Ein Dictionary könnte ich noch mal probieren, das könnte Speicher und Performance bringen. Mal sehen...
Habe ich ja gemacht.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
18. Jul 2016
Soo..
Ich habe das jetzt noch mal getestet. Es scheint wirklich an den Strings zu liegen. 3 Stück habe ich davon, kann aber nur ein String durch einen Integer ersetzen. Dies TAnyValue ist unschuldig!
Das Objekt durch ein Record zu ersetzen, bringt ca 20% an Speichereinsparung. Beim Durchsuchen der Liste wird dann aber mehr als das Doppelte an Zeit benötigt.
Ich glaube, ich muss meine...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
15. Jul 2016
Ja genau. Deswegen habe ich eigentlich gefragt, ob das an dem Objekt liegen kann. Kann so eine Fragmentierung so viel den Speicher aufblähen, wenn die Daten selbst eigentlich nur eine sehr kleine Größe haben?
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
15. Jul 2016
Das mit dem Grow is es nicht. Ich hatte schon versucht das runter zu setzen.
Ich speichere ja eigentlich keine Strings. Strings gehören zu den Selektoren.
Ich speichere Werte mit TAnyValue eine Art TValue. Das Ding habe ich gerade im Verdacht.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
15. Jul 2016
Ja, ich muss aber erst noch ein Testprogramm erstellen. Das kann noch ein paar Tage dauern.
Dein GetApplicationMemory kann ich aber sehr gut gebrauchen. Sowas habe ich nämlich dafür noch gesucht. Danke!
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
13. Jul 2016
Ich habe ein "System-Explorer" mitlaufen. Da kann ich eigentlich gut verfolgen, wie die Rambelegung hochläuft, wenn die Liste gefüllt wird. Ich habe das Problem zurvor auch schon eingekreist, zB indem ich Teile der Liste per Stream auf der Festplatte ausgelagert habe. Dann funktionierte es ohne Fehler. (Die Liste wird in Schüben gefüllt.)
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
12. Jul 2016
Danke für die Einschätzungen.
Die kreisen die Suche schon etwas ein. Ich werde erst einmal ein Testprojekt bauen und mich dann zurückmelden.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
12. Jul 2016
Hatte ich vergessen zu erwähnen: Es läuft FastMM.
Und es sind ganz sicher keine Leaks, das prüfe ich ständig.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
12. Jul 2016
FName : string;
FHerkunft : string;
FLF : Integer;
FIndx : Integer;
FValue : TAnyValue;
FKategorie : TKategorie;
FKombiName : string;
FKombiGruppe : TKombiGruppe;
FKombiRechenIndex: Integer;
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
12. Jul 2016
Ich hoffe, dass ich Dich richtig verstehe, aber ich baue einen Stream mit den einzelnen Werten und Sektoren zusammen. Ich werfe nicht das Objekt so in den Stream. Es läßt sich auch alles sauber vom Stream in die Liste zurückschreiben.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
12. Jul 2016
Also die Strings haben eine ungefähre Länge von 10 bis 30 Zeichen. Allerdings sind da ab-und-zu auch griechische Buchstaben drin.
Ich habe auch schon andere Typen versucht, also Shortstring, ShortInt usw. Hat alles nichts gebracht.
Wie meinst Du das? Soll ich das posten?
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Jens01,
12. Jul 2016
Hallo...
ich habe Probleme mit einer TObjectlist, in der ich Ergebniswerte mit Selektoren abspeichere. In der Liste können schon mal mehrere zehntausend Werte auflaufen. Ab einer bestimmten Menge gibt es ein "Out of Memory"-Fehler und das Programm stürzt ab.
Was für mich aber unverständlich ist, wenn ich dieselben Daten in ein Stream packe und auf der Festplatte abspeichere, sind da nur wenige...