Avatar billede skovborg Nybegynder
28. august 2003 - 14:54 Der er 9 kommentarer og
1 løsning

hægtet liste versus array

Hej
Vi har her i min afdeling en debat om hvad der er hurtigts at benytte til at opsamle data for derefter at læse dem ned i en fil/database.
A. siger at det må være et array (af en klasse) af en god stor størrelse der skal være så stort at det ikke bliver fyldt op inden det bliver tømt.
B. siger at det må være en hægtet liste (af en klasse).

Jeg håber at i kan hjælpe mig så jeg kan få fred..
Vi ses
Morten Skovborg
Avatar billede erikjacobsen Ekspert
28. august 2003 - 14:56 #1
Der er mindst administration med array - så hvis man kan vide hvor stort
er stort nok, så er det umiddelbart det hurtigste
Avatar billede arne_v Ekspert
28. august 2003 - 15:01 #2
Der er ingen tvivl om at array bruger mindst CPU kraft.

Hvis I ved præcis hvor mange elemener der er så vil array også
bruge mindst memory.

Men hvis I allokerer et rigeligt stort array, så vil array bruge mest memory.

Hvis det skal skrives til fil/database, så vil processing tiden være
insignifikant i forhold til total tiden (inklusive IO tid).
Avatar billede skovborg Nybegynder
28. august 2003 - 22:02 #3
OK er vi enige om at et array derfor vil være hurtigere end en hægtet liste ??
Med venlig hilsen
Morten skovborg
Avatar billede arne_v Ekspert
28. august 2003 - 22:07 #4
Ja.

Men ikke dermed nødvendigvis den "bedste" kode.
Avatar billede skovborg Nybegynder
29. august 2003 - 12:45 #5
Kan i ikke sætte et svar ind (begge to) så i kan få tildelt nogle point.
Avatar billede arne_v Ekspert
29. august 2003 - 12:50 #6
okay
Avatar billede killer_bee Nybegynder
29. august 2003 - 15:18 #7
Vil lige blande mig ind.. :).. Array er vel kun hurtigst hvis man ved hvilken 'plads' i arrayet det man søger efter har .. altså hvis man har en form for en key som man kan regne plads ud fra.. ellers hvis man skal igennem hele arrayen for at finde info er det lige så langsomt/hurtigt som liste..
Avatar billede arne_v Ekspert
29. august 2003 - 16:47 #8
Nej.

At gå fra et array element til et andet array element er bare et spørgsmål
om at ligge en konstant til en adresse.

At gå til næste element i en hægtet liste vil kræve:
  - lægge en konstant til en adresse for at finde next adressen
  - hente værdien fra denne adresse

Det lyder måske ikke som meget forskel men det første kan bl.a. loop
unrolles og udnytte data cache. Det andet kan ikke.

Så der er forskel.

Men som jeg allered ehar sagt: hvis der skal laves disk IO er det ubetydeligt.
Avatar billede arne_v Ekspert
10. september 2003 - 21:58 #9
Erik hvis du ligger et svar så kan skovborg få lukket spørgsmålet.
Avatar billede skovborg Nybegynder
10. september 2003 - 22:18 #10
surt for erik men jeg gider ikke og vente længere.
Tak for hjælpen
Vi ses
Morten Skovborg
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester