Einzelnen Beitrag anzeigen

Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
900 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Speicherallokation / Geschwindigkeit beim speichern und auslesen

  Alt 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.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat