Registriert seit: 17. Jul 2005
885 Beiträge
Delphi 11 Alexandria
|
AW: Speicherallokation / Geschwindigkeit beim speichern und auslesen
11. Apr 2024, 10:24
Etwas mehr Hintergrund:
Die "Listen" in Delphi (d.h. TList u.ä.) sind meistens auch intern als dynamisches Array implementiert. Dort wird das Problem der hohen Laufzeit beim wiederholten Hinzufügen neuer Elemente dadurch beschleunigt, dass diese internen Arrays nicht bei jeder Einfüge-Operation nur um 1 vergrößert werden, sondern um deutlich mehr, iirc um 25% der alten Größe (falls nötig).
D.h. wenn man in eine (volle) Liste mit 100 Elementen ein neues Element einfügt, wird das interne Array so vergrößert, dass nicht nur 101 Elemente, sondern 125 Elemente hineinpassen. Dadurch ist die amortisierte Laufzeit für das wiederholte Einfügen dann vergleichbar mit Listen, die auch als (doppelt) verkettete Liste implementiert sind. Aber auch in dem Fall ist es sinnvoll, die Größe vorher festzulegen, wenn man sie kennt. Dafür gibt es bei TList die Property Capacity.
The angels have the phone box.
|