slides.com/jod/pt_maa_29
Docent: Jo Devriendt
Assistent: Ann Philips
Coördinator: Joost Vennekens
voornaam.achternaam@kuleuven.be
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Onderwerpen:
Uitsmijter om 10:20 :
Arrays vs linked lists
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Simpel experiment:
$ ./a.out
constructie linked list tijd: 2.523655
som lange lijst: 4950000000 tijd: 0.347169
constructie array tijd: 1.034449
som lange array: 4950000000 tijd: 0.023802
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Simpel experiment 2:
$ ./a.out
constructie linked list tijd: 2.511495
som lange lijst: 4950000000 tijd: 0.342970
constructie array tijd: 1.256083
som lange array: 4950000000 tijd: 0.114533
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Geheugenlayout van arrays is beter:
Om geheugenlocatie van volgende element te verkrijgen, moet je gewoon een bewerking uitvoeren (++i), niet een geheugenveld lezen (kop = kop->volgende)
$ ./a.out
constructie linked list tijd: 2.511495
som lange lijst: 4950000000 tijd: 0.342970
constructie array tijd: 1.256083
som lange array: 4950000000 tijd: 0.114533
(initiële hypothese: effecten van de cpu-cache, maar ben niet meer zo zeker)
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Hashtabellen maken intern gebruik van arrays ipv samengestelde pointers (zoals linked lists en zelfbalancerende bomen).
Dit is een belangrijke reden voor hun snelheid in de praktijk.
$ ./a.out
constructie linked list tijd: 2.511495
som lange lijst: 4950000000 tijd: 0.342970
constructie array tijd: 1.256083
som lange array: 4950000000 tijd: 0.114533