Delphi-PRAXiS
Seite 5 von 7   « Erste     345 67      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Maßnahmen zum Speicherverbrauch minimieren (https://www.delphipraxis.net/185886-massnahmen-zum-speicherverbrauch-minimieren.html)

stahli 16. Jul 2015 22:57

AW: Maßnahmen zum Speicherverbrauch minimieren
 
In dem Projekt male ich keine Striche.

Aber egal. Ich habe verstanden, dass
Delphi-Quellcode:
StringA := 'XXX';
StringB := StringA;
einmal Speicher belegt und
Delphi-Quellcode:
StringA := 'XXX';
StringB := 'XXX';
zweimal.

Was bei meinem Projekt möglicherweise falsch läuft, suche ich dann am WE.
Wird schon klappen... ;-)

TiGü 17. Jul 2015 08:09

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?

BUG 17. Jul 2015 09:06

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.

Mavarik 17. Jul 2015 09:12

AW: Maßnahmen zum Speicherverbrauch minimieren
 
Zitat:

Zitat von BUG (Beitrag 1308957)
Zitat:

Zitat von Sir Rufo
Und du bastelst da nochmal ein Interface drum herum und das anscheinend auch noch falsch ...
Warum sollte ich mir etwas anschauen, wo du bunte Striche malst?

Da ist aber jemand angefressen :mrgreen:

ne er hat ja Recht. Das ist wieder so ein Glaskugel Thread...

42!

Union 17. Jul 2015 09:17

AW: Maßnahmen zum Speicherverbrauch minimieren
 
Auch ich würde gerne helfen. Ist aber schwierig ohne ein entsprechendes Testprojekt.

Mavarik 17. Jul 2015 09:42

AW: Maßnahmen zum Speicherverbrauch minimieren
 
Zitat:

Zitat von Union (Beitrag 1308983)
Auch ich würde gerne helfen. Ist aber schwierig ohne ein entsprechendes Testprojekt.

:lol: Klasse EMBT Antwort...

Union 17. Jul 2015 11:08

AW: Maßnahmen zum Speicherverbrauch minimieren
 
Zitat:

Zitat von Mavarik (Beitrag 1308989)
Zitat:

Zitat von Union (Beitrag 1308983)
Auch ich würde gerne helfen. Ist aber schwierig ohne ein entsprechendes Testprojekt.

:lol: Klasse EMBT Antwort...

Ja, ich finde "42" und "Glaskugel" auch viel besser. Aber das ist ja Dein Patent ;)

stahli 17. Jul 2015 12:50

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:
fName: String
durch
Delphi-Quellcode:
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:
Delphi-Quellcode:
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...

idefix2 17. Jul 2015 17:54

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.

stahli 18. Jul 2015 09:18

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.
Seite 5 von 7   « Erste     345 67      

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