Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: array of record; bzw. arrays in OOP

  Alt 20. Feb 2005, 13:02
Zitat von Robert_G:
Am praktischsten finde ich immer noch linked Lists, die man hinter einer Collection ""versteckt".
Meinst du etwa TCollection? Wenn ja: und was ist dann das: "FItems: TList;"


Zitat:
Arrays haben einen Vorteil gegenüber Listen: Random access.
Und noch einer: Man kann sich viel schneller durch sie durchiterieren, da man nur den Zeiger erhöhen muss und deswegen nur einen Speicherzugriff zum Auslesen der passenden Stelle braucht und nicht zwei, wie bei LinkedLists braucht (einen zum Auslesen von "Next" und einen zum Auslesen der Speicherstelle).

Zitat:
Das war's auch schon mit den Vorteilen von Arrays.
Für statische Dinge sind Arrays um Welten besser als LinkedLists. Für dynamische sieht das natürlich anders aus, wobei man sich hierbei zwischen schlechterer Zugriffsgeschwindigkeit und Herumkopiererei entscheiden muss.


Zitat:
Und was an Records sparsamer sein soll weiß wohl auch keiner.
Sie brauchen weniger Speicher als class, und genausoviel wie object ohne eine virtuelle Methode (object stammt ja von record ab).
Ein record kann auf dem Stack liegen, eine class liegt ohne Tricks immer im Heap.

Zitat:
Die Dinger werden bei Zuweisung KOPIERT! Bei Referenzen auf ein Objekt muss nur der Zeiger (4Bytes) kopiert werden.
Bei Referenzen auf einen Record muss auch nur der Zeiger (4Bytes) kopieren werden.
Da hast du wohl zwei unterschiedliche Sachen verglichen. Wenn man die Daten einer Klasse kopieren will muss man sich auch noch selbst darum kümmern (was seine Vorteile hat), oder man muss "Move(yourInstance^, myInstance^, myInstance.InstanceSize);" aufrufen, was einer Wert-Zuweisung im Sinne einer Records-KOPIE entspräche.


Zitat:
@maximov ich dachte Referenzen wären 4 Byte.
Zumindest unter 32Bit Prozessoren
  Mit Zitat antworten Zitat