@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 auszulagern.
Platz sparen ist generell schon sinnvoll, abgesehen vielleicht, wenn man weiß, dass das eigene Projekt ohnehin nur wenig Speicher verbraucht.
Ich dachte, es gäbe hier Tipps wie: bestimmte Linkeroptionen ausschalten,
RTTI deaktivieren, auf Generics verzichten usw.
@Mavarik
!48
@Union
Das Projekt kennst Du ja, nur nicht den aktuellen Quelltext.
Meine Kontaktkanäle wären noch offen...
@Sir Rufo
Da ich
fName: String
durch
fNameIntf: IInterfaceMitNamenEigenschaft
ersetzt habe bin ich davon ausgegangen, dass der Speicherverbrauch deutlich zurückgeht, da es dann nur noch wenige Objekte gäbe, die die eigentlichen Namen verwalten. Auf diese würden nur noch Pointer zeigen.
Dass das Gegenteil rauskam hat mich verwundert. Aber gestern war es mir dann schon zu spät für weitere Untersuchungen.
Die Namen werden von dem benamten Objekt (Interface) über eine Funktion bereitgestellt:
S := MyNamedIntf.Name;
und dann lokal weiter verarbeitet.
Eigentlich sollte der String-Speicher dann ja wieder freigegeben werden, wenn der lokale Scope verlassen wird.
Ich werde heute Abend Dein Demoprojekt mal umbauen (TNameObject + INameInterface) und damit testen.
Ich will ja auch verstehen, wie das zusammenhängt. Bisher hatte ich noch keinen Bedarf an solchen Optimierungen und daher keine entsprechenden Kenntnisse.
Ich melde mich dann wieder...