Avatar billede maqhem Nybegynder
15. april 2007 - 22:05 Der er 13 kommentarer og
1 løsning

Meget stort array

Tror I det ville være et meget stort problem, og tage vildt meget virtuel hukommelse, hvis en meget simpel applikation hele tiden kørte samme process igennem for et array (at tjekke efter et nyt elements eksistens i arrayet, og derefter tilføje det dertil) i et loop, til arrayet har en størrelse på omkring 400.000 elementer?
Avatar billede arne_v Ekspert
15. april 2007 - 22:08 #1
hvilken type er arrayet ?
Avatar billede arne_v Ekspert
15. april 2007 - 22:09 #2
400000 elementer af int er f.eks. kun 1.6 MB hvilket er ingenting
Avatar billede maqhem Nybegynder
15. april 2007 - 22:14 #3
Det er 400.000 elementer af typen String, som formegentligt ikke overskrider 40 chars.
Avatar billede erikjacobsen Ekspert
15. april 2007 - 22:15 #4
Kan være du skal bruge en hashtabel ?
Avatar billede maqhem Nybegynder
15. april 2007 - 22:16 #5
Uha jeg er rimelig ny inden for "råkoder" som C#. Hvad er en hashtabel?
Avatar billede arne_v Ekspert
15. april 2007 - 22:17 #6
array af string med 400000 elementer og gns. 40 tegn vil fylde

400000*(4+4+40) bytes = 19.2 MB

ikke noget problem

(jeg antager 32 bit .NET)
Avatar billede arne_v Ekspert
15. april 2007 - 22:18 #7
vrøvl

400000*(4+4+80) bytes = 35.2 MB
Avatar billede erikjacobsen Ekspert
15. april 2007 - 22:18 #8
Avatar billede arne_v Ekspert
15. april 2007 - 22:19 #9
men stadig ikke noget problem
Avatar billede maqhem Nybegynder
15. april 2007 - 22:19 #10
Hvor får du de 4+4 fra?
Avatar billede arne_v Ekspert
15. april 2007 - 22:21 #11
du har et array af referencer - på 32 bit .NET fylder en reference 4 byte
så må en String have en længde også og da String kan være op til 2 GB, så må det være 4 byte
40 chars er 80 byte
Avatar billede maqhem Nybegynder
15. april 2007 - 22:22 #12
Ah okay, sådan. Så siger jeg tak for jeres svar. Endnu ved jeg ikke, om en hashtabel er min lykke, men jeg læser lige lidt om det. Smid et svar begge to, hvis I da overhovedet vil have point. Det er der jo en masse, der er ligeglade med.
Avatar billede arne_v Ekspert
15. april 2007 - 22:27 #13
en hashtable er meget hurtigere end et array hvis du skal søge efter noget bestemt

og et svar
Avatar billede erikjacobsen Ekspert
15. april 2007 - 22:29 #14
Ingen point til mig, tak. En skitse (utestet) for brug af hashtable

    String[] words = new String[]{"a","b","c","a"};

    Hashtable h = new Hashtable(100);

    for (int i=0;i<words.Length;i++) {
      if (!h.ContainsKey(words[i])) {
        h.Add(words[i],1);
      }
    }
    foreach( DictionaryEntry de in h ) {
      Console.WriteLine(de.Key);
    }
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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