![]() |
Speichernutzung: array of record vs. TObject (TList usw.)
Hallo Community,
Ich möchte gern mein Programm optimieren, d.h. CPU-Auslastung und RAM-Nutzung soweit wie möglich verringern. Ein Freund von mir hat sich ein ähnliches Programm gebastelt, benötigt aber manchmal nur 1/3 meiner RAM-Nutzung. Ich habe schon dynamisch erstellte Forms eingebaut und arbeite anstelle von TObjects und TLists mit arrays of records. Ich habe schon gemerkt, dass ich ca. 10mal so viele Procedures und Functions benutze (wird mir sonst zu unübersichtlich) als er (was wahrscheinlich der Hauptgrund ist, da diese ja vorher Speicher reservieren), trotzdem wollte ich mal wissen, ob arrays of records wirklich am wenigsten Speicher reservieren (war jedenfalls so meine Überlegung, weil diese ja Zeiger auf eine Speicheradresse setzen und nur wirklich für die Variablen des records Speicher reservieren). |
Re: Speichernutzung: array of record vs. TObject (TList usw.
Wenn du dynamische Arrays verwendest: vermeide Setlength (Array, length (Array) + 1) ;)
Sonst kannst du RAM Sparen, indem du alles so früh wie möglich freigibst ;) |
Re: Speichernutzung: array of record vs. TObject (TList usw.
nen einfacher pointer der _alles_ beinhaltet ist wohl das beste :)
aber du kannst _genauso_ TList und TObjectList verwenden - bei richtiger anwendung fressen die genauso speicher wie dein array of record |
Re: Speichernutzung: array of record vs. TObject (TList usw.
Gibt es denn bei dem array of "Pointer" einen Unterschied im Hinblick auf den array of record?
|
Re: Speichernutzung: array of record vs. TObject (TList usw.
TList(&seine Freunde) kapselt ja mehr oder weniger nen array of pointer wenn'd mal in die Classes.pas schaust ...
|
Re: Speichernutzung: array of record vs. TObject (TList usw.
Zitat:
Ansonsten, zum Thema Performance vs. Speicher. In den meisten Fällen sind die Typen von TList & Co. schneller und effizienter in der Nutzung und Programmierung als Records. Ein reiner Record nutzt hingegen (nur etwas) weniger Speicher als ein TList-Objekt. Aus meiner Sicht ist es dieser Speicher nicht wert die "Luxus" eines Listenobjektes nicht zu nutzen. Records können sich allerdings auch als große Speicherfresser beweisen, wenn man, wie jfheins schon gewarnt hat, immer Dinge wie Setlength (Array, length (Array) + 1) macht :shock: ...:cat:... |
Re: Speichernutzung: array of record vs. TObject (TList usw.
Zitat:
...:cat:... |
Re: Speichernutzung: array of record vs. TObject (TList usw.
Zitat:
|
Re: Speichernutzung: array of record vs. TObject (TList usw.
Oo ja wen meinst du jetz?
egal - das mit den records - das sie kleiner als tlist items sind - ist auch nicht immer richtig - kommt ja auch auf dieses record alignment und blah blubb an ... fazit: solle er mit TList arbeiten - und bei klassen/objekten mit TObjectlist |
Re: Speichernutzung: array of record vs. TObject (TList usw.
Zitat:
p.s.: Habt ihr schnmal daran gedacht, dass ein Array of Record (also nicht von einem Pointer auf einen record) KOPIEN der Records enthält, die man reinwirft? -> puff jedesmal wenn du da was rausholst kostet es dich 2-mal den Speicher dieses Records bis dieser aus dem Scope rennt... p.p.s.: Kein Wunder, dass er nur ein 10'tel der Methoden braucht. :mrgreen: Er kann Objekte voneinander ableiten und somit auch deren MEthoden. Du musst jedes Mal das Rad neu erfinden... ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 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