![]() |
AW: Maßnahmen zum Speicherverbrauch minimieren
In dem Projekt male ich keine Striche.
Aber egal. Ich habe verstanden, dass
Delphi-Quellcode:
einmal Speicher belegt und
StringA := 'XXX';
StringB := StringA;
Delphi-Quellcode:
zweimal.
StringA := 'XXX';
StringB := 'XXX'; Was bei meinem Projekt möglicherweise falsch läuft, suche ich dann am WE. Wird schon klappen... ;-) |
AW: Maßnahmen zum Speicherverbrauch minimieren
Irgendwie fehlt mir gerade heute morgen nach nur einen Kaffee die Fantasie, um zu ergrübeln, was man mit einer derartigen hohen Anzahl von Objekten machen möchte.
Bei derart hohen Speicherauslastungen hätte ich spontan auf Bild- und/oder Videoverarbeitung getippt, aber das ist wohl nicht der Fall, oder? |
AW: Maßnahmen zum Speicherverbrauch minimieren
Wenn ich das richtig verstanden haben, möchte Stahli später eine Verdrängung implementieren, aber möchte trotzdem erstmal den Speicherbedarf verringern. Das finde ich legitim.
|
AW: Maßnahmen zum Speicherverbrauch minimieren
Zitat:
42! |
AW: Maßnahmen zum Speicherverbrauch minimieren
Auch ich würde gerne helfen. Ist aber schwierig ohne ein entsprechendes Testprojekt.
|
AW: Maßnahmen zum Speicherverbrauch minimieren
Zitat:
|
AW: Maßnahmen zum Speicherverbrauch minimieren
Zitat:
|
AW: Maßnahmen zum Speicherverbrauch minimieren
@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
Delphi-Quellcode:
durch
fName: String
Delphi-Quellcode:
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.
fNameIntf: IInterfaceMitNamenEigenschaft
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:
Delphi-Quellcode:
und dann lokal weiter verarbeitet.
S := MyNamedIntf.Name;
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... |
AW: Maßnahmen zum Speicherverbrauch minimieren
Wie lange können deine Namen maximal werden, wie lange sind sie im Durchschnitt, und wieviele verschiedene Namen gibt es?
Von den Fragen hängt wohl ab, in welcher Richtung da Optimierungen zielführend sein können. |
AW: Maßnahmen zum Speicherverbrauch minimieren
Liste der Anhänge anzeigen (Anzahl: 2)
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 Textes erzeugt erwartungsgemäß einen höheren Speicherbedarf. Stringreferenz und Interfacereferenz sind gleichermaßen platzsparend. Ob var- oder const-Parameter spielt keine Rolle. Jetzt werde ich mein Projekt nochmal entsprechend überarbeiten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz