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