Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Multi-vejs hobe med ekstra bytes Foredrag: Claus Jensen Projektmedlemmer: Jyrki Katajainen, Fabio Vitale, Claus Jensen.

Lignende præsentationer


Præsentationer af emnet: "Multi-vejs hobe med ekstra bytes Foredrag: Claus Jensen Projektmedlemmer: Jyrki Katajainen, Fabio Vitale, Claus Jensen."— Præsentationens transcript:

1 Multi-vejs hobe med ekstra bytes Foredrag: Claus Jensen Projektmedlemmer: Jyrki Katajainen, Fabio Vitale, Claus Jensen

2 Hob En hob er en sekvens, som gemmer elementerne af et venstre komplet træ i bredde først orden. Det gælder for hver gren i træet, at elementerne i en knudes børn er mindre end knudens eget element ud fra en given ordensfunktion.

3 Implicit hob Vi har valgt at bruge en implicit hob. En implicit hob er en hob, som er implementeret uden brug af pointers. I stedet for bruges indeks, og der navigeres rundt vha. beregninger på disse indeks.

4 Implicit hob Tallene repræsenterer indeksværdien.

5 Binær hob Binære hobe er den type hobe, som kendes fra tekstbøgerne. En binær hob kan også kaldes en 2-vejs hob, og man kan sige, at den har grad (degree) lig med 2.

6 Binær hob

7 Multi-vejs hob Det er muligt at generalisere hob- begrebet til også at omfatte hobe med grader højere end 2. Vores udgangspunkt har været at eksperimentere med følgende hob grader: 2-4-8-16-256

8 Multi-vejs hob Baggrunden for, at vi har valgt at eksperimentere med de nævnte hob grader, er at eksperimenter har vist at 4-vejs og 8-vejs hobe har en bedre performance end 2-vejs hobe.

9 4-vejs hob

10 Ekstra information Når man bevæger sig ned gennem en hob, vil man normalt finde ”top" barnet on the fly. Det betyder, at man risikerer at foretage en masse unødvendige sammenligninger, da der allerede tidligere kan være blevet foretaget en sammenligning mellem de berørte elementer.

11 Ekstra information Ved at gemme ekstra information i forbindelse med hobens knuder kan antallet af sammenligninger nedsættes.

12 Ekstra information Baggrunden for, at vi har valgt at eksperimentere med brugen af ekstra information, er, at forsøg med hobe har vist, at der kan opnås en bedre performance ved at bruge ekstra information.

13 Ekstra information Vi har eksperimenteret med forskellige strukturer til opbevaring af den ekstra information. Følgende strukturer er blevet implementeret: En bit-struktur, navigation pile og selection tree.

14 Ekstra information

15 Zero-rooted Zero-rooted eller D-rooted hobe er en omstrukturering af hob-strukturen, som har til formål at forbedre performance. En zero-rooted hob har i modsætning til en normal hob ikke een enkelt rodknude, men derimod et antal rodknuder svarende til hobens grad. Eller man kan alternativt sige, at hoben ingen rodknude har.

16 Zero-rooted Ideen bag brugen af zero-rooted-strukturen er at gøre hoben et niveau mindre dyb, og på denne måde spare en sammenligning. Dette vil ikke have betydning for hobe med en lille grad, men når graden vokser vil hobens dybde mindskes, og fordelen ved at bruge zero-rooted-strukturen vil samtidig vokse.

17 Zero-rooted

18 Local heaps En anden alternativ måde at strukturere sin hob på er at bruge et van Emde Boas-layout. I et van Emde Boas layout grupperes børn og deres forældre sammen, så de ligger tæt på hinanden i hukommelsen.

19 Local heaps Eksperimenter med brugen af van Emde Boas layoutet i forbindelse med træer har vist positive resultater. Så på den baggrund har vi valgt også at eksperimentere med dette layout for hobe.

20 Indsætningsbuffer En af de metoder, som vi har overvejet for at forbedre performance af vores hob-funktioner er brugen af en indsætningsbuffer. Ved at bruge en indsætningsbuffer undgår man at foretage shift up for hvert nyt element.

21 Indsætningsbuffer Vi har valgt 2*graden som størrelsen af vores buffer. Bufferen bruger den samme type funktioner og ekstra information, som hob strukturen bruger.

22 Framework Vores framework er opdelt i en række moduler. Der findes en række overordnede funktioner samlet i et hob-modul, hvis interface afspejler STL's hob grænseflade. De overordnede funktioner bruger et modul, som indeholder utility funktioner til at udføre shift up og shift down.

23 Framework Både hob-modulet og utility-modulet bruger yderligere et modul. Dette modul er et policy-baseret modul. Det policy-baserede modul indeholder en række layout-funktioner og en række ”top”-funktioner.

24 Framework Policy-modulet består af en række funktioner, som både findes i en generaliseret udgave og i en udgave specialiseret for en bestemt grad.

25 Resultater Vores resultater har indtil videre ikke været særlig opmuntrende, men alle muligheder er ikke fuldt udforsket endnu. Et af de åbne spørgsmål er, om vi bør måle wall-clock time i stedet for CPU time.

26 Resultater Vi mangler også at foretage benchmark-målinger af følgende tilfælde: Store elementer. Dyre sammenligninger.

27 Overraskende resultater Der har i forbindelse med benchmark- kørslerne vist sig en række overraskende resultater. Af disse kan nævnes følgende: Det er bedre at bruge interger i stedet for char til opbevaring af den ekstra information, også selvom dette giver et større pladsforbrug.

28 Overraskende resultater Næstede if sætninger er dyre, også selvom der kun bruges få niveauer. Størrelsen af den ekstra informations pladsforbrug, har ikke afgørende betydning for kørselstiden.


Download ppt "Multi-vejs hobe med ekstra bytes Foredrag: Claus Jensen Projektmedlemmer: Jyrki Katajainen, Fabio Vitale, Claus Jensen."

Lignende præsentationer


Annoncer fra Google