Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#25

AW: verkettete Listen

  Alt 20. Apr 2018, 14:40
Die gehen aber offensichtlich davon aus, dass man das Element erst noch suchen muss. Das ist ein bisschen unfair der verketteten Liste gegenüber. Denn an sich geht das Einfügen oder Löschen eines Elements in einer verketteten Liste – wenn man den Pointer schon hat – in konstanter Zeit, weil man ja nur zwei Pointer umbiegen muss. Beim Array dagegen muss man immer alle Elemente nach dem gelöschten bzw. eingefügten Element umkopieren, was mit der Anzahl der Elemente linear ansteigt. Gerade da spielt die verkettete Liste ja ihre Stärke aus. Das ist normalerweise genau der Grund, warum man sich für eine verkettete Liste entscheidet.
Das häufige Anfordern und Freigeben von vielen kleinen Speicherblöcken kann durchaus langsamer sein, als die einmalige Anforderung eines einzelnen (oder wenigen) großen Blocks. std::vector over-allocated z.B. anhand bestimmter Growth-Faktoren. Bei einer linked-list wäre das nur möglich, wenn man alle Nodes im selben Speicher hält, wofür man dann aber wiederrum z.B. ein extra Bitmap benötigt, um die freien Bereiche zu Tracken (habe ich deshalb noch in kaum bzw. sogar in keiner Implementation gesehen). Kann also schon sein, dass das Verschieben des Speichers performanter ist. Denke das muss man alles individuell auf den Anwendungsfall bezogen testen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat