Ik zal nog even een voorbeeldje geven van wat ik bedoel
Stel: ObjectX is 100KB (stukje tekst ofzo) en die heb je hangen in 5 eind leafs van je tree
en een Reference naar de memory locatie van objectX is 8Bytes
code:
1
2
3
4
5
| root
/ / | \ \
refToX1 refToX1 refToX1 refToX1 refToX1
\ \ | / /
ObjectX |
Dan heb je in je collectie 5*8bytes = 40Byte + 100KB = 100,40KB
Stel nu heb je slechts 1x ObjectX via een reference in je tree hangen
Dan heb je 1*8bytes + 100KB = 100,08KB
Dus per toevoegen van 1 referentie naar ObjectX voeg je 8 bytes toe
En per toevoegen van een nieuw Object voeg je 100,08KB toe
Eigenlijk is je collectie nu het slechtstse geval (*alleen nieuwe objecten*) O(n) waar n is 100KB + 8 bytes per object
in het beste geval is je collectie nog steeds O(n) maar nu is n eenmalig 100,08KB en wordt bij elke toename van n de collectie 8byte groter
Dit is dus nogsteeds linieair alleen weergeven in een grafiek een lijn met een veel zwakkere positieve hoek tov de X as
code:
1
2
3
4
5
6
7
8
9
10
11
| Situatie 1:
| *
| *
|*________
Situatie 2:
| *
| *
|_________ |
However wat wel interessant is is een tussengeval waarbij zowel nieuwe als duplicaten worden toegevoegd, hierbij krijg je een soort schuin trappetje met toenames van soms 8Byte en soms 100,08KB dat is dus niet liniear vrees ik, maar als je dit zou normalizeren wel *het is absoluut niet kwadratich, facultatief of iets anders eng snel groeiends* maarja of er een naam voor is?
*yay ascii aart faillure!*
[
Voor 12% gewijzigd door
roy-t op 02-04-2008 12:33
]