-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
23. Jul 2015
@freimatz
Memory-Leaks habe ich nicht (siehe #15).
Der Taskmanager bietet einen Hinweis, wie viel Speicher die Anwendung aktuell insgesamt verbraucht. Das wäre schon mal ein Anhaltspunkt.
Ich werde demnächst mal Deine Funktion testen.
Ich habe dazu nichts gefunden, versuche es aber später nochmal.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
23. Jul 2015
@freimatz
Ja, an der Überlegung ist schon was dran. Man muss halt abwägen, was im Einzelfall wichtiger ist. U.U. können 10% Speicherersparnis so wichtig sein, dass man dafür mehrere Wochen Arbeit für investieren würde.
Deine erste Aussage war zu unkonkret und der konnte ich auch nicht folgen.
Jetzt will ich mich nochmal selbst zitieren:
Die Fragen wären wichtig, um Abstürze zu...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
18. Jul 2015
Sorry, das hätte ich noch erklären müssen.
Durch die Auswahl in der RadioGroupBusiness werden entsprechend viele Businessobjekte erzeugt und die Namen jeweils zufällig zugewiesen.
Dann werden die Namen ausgelesen (damit ich auch mal einen Zugriff darauf habe) und einer Stringvariablen zugewiesen.
Der letzte (zufällige) Wert wird dann einfach angezeigt.
Da ist also nicht weiter...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
18. Jul 2015
Im Grunde stimmt das. Ich werde aber aus anderen Gründen aber die Interface-Lösung nutzen, da die einfachen Strings nicht reichen.
Meine Erkenntnisse:
- Das Zuweisen von String-Vatiablen zueinander verbraucht nur einmal Speicherplatz.
- Der Speicherplatz wird freigegeben, wenn es keine Referenzen mehr darauf gibt.
- (Die Speicherverwaltung von Strings entspricht heute quasi der von...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
18. Jul 2015
So, mal ein Testprojekt (XE3-Projekt + EXE) anbei.
Man kann erst mal mehrere Namen-Objekte erzeugen und dann mehrere Business-Objekte (bzw. Interfaces), denen dann Namen zugewiesen werden.
Den Zuweisungsmodus kann man auswählen. Man kann die Stringvariable übergeben oder das Namenobjekt oder einen neuen Text.
Jeden Modus einmal mit const- und var-Parameter.
Das Zuweisen eines neuen...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
17. Jul 2015
@BUG
Wenn Du mit "Verdrängung" meinst, dass Daten auch ausgelagert werden können (ORM/Datenbank) dann stimmt das genau.
@TiGü
Wie Bug schrieb sehe ich das eher als abstraktes Thema an. WENN man viele Daten in Objekten halten will ist es nicht schlecht, die Datenspeicherung etwas zu optimieren.
Das trifft auch zu, wenn man die Möglichkeit vorsieht, Datenmengen in eine Datenbank...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
16. Jul 2015
In dem Projekt male ich keine Striche.
Aber egal. Ich habe verstanden, dass
StringA := 'XXX';
StringB := StringA;
einmal Speicher belegt und
StringA := 'XXX';
StringB := 'XXX';
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
16. Jul 2015
Ein Auszug wir schwierig und durch das ganze Projekt wirst Du Dich nicht wühlen wollen.
Ich nehme mir am WE dafür Zeit.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
16. Jul 2015
Aaalsooo...
Unter 32bit habe ich mal 4 Varianten versucht, bis Out of Memory kam:
Debug, IDE, 97.059, 1.946,2 MB
Debug, EXE, 97.125, 1.947,8 MB
Release, IDE, 97.498, 1.955,0 MB
Release, EXE, 97.498, 1.955,2 MB
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
16. Jul 2015
Dann wäre das letztlich ein eindeutiger Schlüssel bzw. Index für einen bestimmten Eintrag - oder?
Ansonsten würden Hashkollisionen möglich sein oder in der Hashtabelle viele Plätze unbelegt bleiben müssen.
Kannst Du Euren Ansatz noch etwas erklären?
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
16. Jul 2015
Das denke ich auch. Hash-Werte lassen sich ja nicht in einen Ursprungs-String zurück wandeln. Unterschiedliche Strings können den gleichen Hash-Wert haben.
Bei Video2Brain gibt es ein gutes Tutorial zu Datenstrukturen: https://www.video2brain.com/de/videotraining/programmieren-lernen-datenstrukturen
Ist so ein kleiner 3h-Ersatz für ein 3jähriges Studium. ;-)
Ich fand es interessant, wenn...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
16. Jul 2015
Worauf willst Du raus?
Ich habe z.B.
IMyInf = interface
...
property Name: string read get_Name write set_Name
...
Die Klasse hält dann natürlich noch ein fName: String bzw. ein Objekt, das einen String verwaltet.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
16. Jul 2015
Ich habe gestern einfach mal String durch AnsiString ersetzt.
Nach Studium der Hilfe http://docwiki.embarcadero.com/RADStudio/XE8/de/Unicode_in_RAD_Studio
war zu erwarten, dass es nicht sehr viel ausmachen wird. Und so ist es auch.
Statt 92539 Hauptobjekten konnte ich 97059 erzeugen.
Wie bereits beschrieben, sind das die Hauptobjekte, denen diverse Eigenschaften, Listen und Referenzzeiger...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
15. Jul 2015
Das schaue ich mir jetzt mal an...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
15. Jul 2015
Danke für Eure Hilfe!
Ich bin auch etwas überrascht, dass der Speicherbedarf so hoch ist.
Mit etwas einfacheren Objekten konnte ich 3-4 Mio Stück erzeugen.
Wenn allerdings jedes Objekt wieder n Unterobjekte verwaltet, dann reduziert das natürlich die Anzahl der Hauptobjekte.
Mit Unterobjekten sind dann sowohl die Verwaltungsobjekte gemeint, die Businessobjektreferenzen verwalten, als auch...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
15. Jul 2015
Ja, das habe ich mit meinem letzten Satz anzudeuten versucht (mit Datenbankanbindung meinte ich letztlich einen ORM (bzw. Manager falls ich mich doch noch für NoSQL entscheide), der sich auch um die Lebenszeit der Objekte kümmert).
Mich würde aktuell erst einmal interessieren, welche Maßnahmen man versuchen sollte, um auf 150T oder 200T mögliche Objekte zu kommen.
Z.B. eben durch Ersetzen...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
15. Jul 2015
Ich entwickle unter XE3 (VCL) ein Projekt, das viele dynamische Objekte mit unterschiedlichen Eigenschaften erzeugt (zum großen Teil verschachtelte Listen als Untereigenschaften).
Listen sind z.B. TList<IMyInterface> und TList<IMyNamedObject> sowie einige TStringLists.
Die NamedObjekte haben eine Eigenschaft Name, die letztlich einen String enthält.
Jedes Businessobjekt hat Listen als...