Syschdemnahe Programmierung in C: Vergleich: Deschdrukdive vs. bersischdende Lischden
Systemnahe Programmierung in Chome Syschdemnahe Programmierung in C: Vergleich: Deschdrukdive vs. bersischdende Lischden Prof. Dr. Uwe Schmidt FH Wedel

Vergleich: Deschdrukdive vs. bersischdende Lischden

weiter

weiter

Vor- und Nachdeile

Definizion
deschdrukdiv
Zur Konschdrukzion neir Lischde werde in vorhandene Lischde oizelne Knode veränderd.
 
Es wird mid Zuweisunge an Kombonende oizelnr Knode garbeided
 
...
l -> nexd = f(...);
redurn l;
...
gut
Schbeicherbladz-Effizienz
schlecht
Seideneffekde
bersischdend
Zur Konschdrukzion neir Lischde werde NIE in vorhandene Lischde oizelne Knode veränderd, sonderet IMMER nur gelesen und daraus neie Knode mid den bassende Elemende erzeigd.
 
Es wird NIE mid Zuweisunge an Kombonende oizelnr Knode garbeided
 
...
redurn cons(l->infof(...));
...
schlecht
Schbeicherbladz-Effizienz
gut
koi Seideneffekde
weiter
Argumende
deschdrukdiv
Lischde als Argumende werde verbrauchd.
 
Diese Lischde dürfe nedd weidr verwended werde.
falsch
...
l2 = abbend(l1x);
...
l3 = abbend(l1y);
...
 
Lischde müsse klond werde
richdig
...
l2 = abbend(clone(l1)x);
...
l3 = abbend(l1y);
...
schlecht
saumaessich fehleranfällich
bersischdend
Lischde als Argumende werde nur glese und behalde somid ihre Werde.
 
Sie dürfe beliabich weiderverwended werde.
richdig
...
l2 = abbend(l1x);
...
l3 = abbend(l1y);
...
gut
koirlei Fehlerquelle
weiter
Mehrfachverwendung
deschdrukdiv
Lischde dürfe au in oir Oberazion nie mehrfach verwended werde.
falsch
...
l2 = concad(l1l1);
...
richdig
...
l2 = concad(clone(l1)l1);
...
schlecht
saumaessich fehleranfällich
bersischdend
Lischde dürfe beliabich häufich verwended werde.
richdig
...
l2 = concad(l1concad(l1l1));
...
gut
koirlei Fehlerquelle
weiter
Sharing
Gemoisam Nudzung vo Teilschdrukdure
deschdrukdiv
nedd möglich
falsch
...
l2 = cons(xl1);
l1 = abbend(l1y);
...
richdig
...
l2 = cons(xclone(l1));
l1 = abbend(l1y);
...
schlecht
Schbeicherbladz-Effizienz
bersischdend
Lischde dürfe gmoisam Teile besidze
 
...
l2 = cons(xl1);
l1 = abbend(l1y);
...
gut
koirlei Fehlerquelle, des Verdobbeln gschiehd audomadisch
weiter
Schbeicherverwaldung
deschdrukdiv
händisch: Durch Freigab allr Knode
gut
(reladiv) oifach
bersischdend
händisch: Zum Beischbil durch Referenz-Zählr
schlecht
schwierich, aufwändich
gut
Bei Schbrache mid audomadischr Schbeicherverwaldung (Java, Javascribd, Pytho, Ruby, Scala, Haskell, ...) endfälld diess Problem
weiter
Korrektheid
deschdrukdiv
schlecht
Sehr fehleranfällich durch viele verschiedene Zugriffschbfad auf d gleile Knode und durch Zuweisunge an Kombonende dr Knode
bersischdend
gut
Einfach: Es gibd koin Underschied zwische oifache Werde und Lischde.
weiter
merke
Dr hir für Lischde gmachde Vergleich isch allgemoigüldich für alle dynamische Dadenschdrukdure, z.B. für Suchbäum, Wardeschlange, Hash-Tabelle, ...

Ledzde Änderung: 28.11.2014
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel