Avatar billede phliplip Nybegynder
05. juli 2006 - 09:02 Der er 4 kommentarer og
1 løsning

Performance optimering, arrays

Hej Exp'er,

Har lige et lille spørgsmål angående array perfomance.

Jeg har et "multidim"-array

var s = new Array();
s[0] = new Array();
s[0][0] = new Array(' ');
s[0][1] = new Array('<div id="yy1xx0">Sortering</div>');
s[1] = new Array();
s[1][0] = new Array('&nbsp;');
s[1][1] = new Array('<div id="yy1xx1">&nbsp;</div>');

Det ovenstående er bare begyndelsen, det hele ender med at jeg har et mega array, af forskellige objects, strings osv.

Når jeg skal sortere på det og der er fx 200 rækker så er det enormt langsomt, og til tider vil IE også afbryde scriptet. Jeg tror umiddelbart det er pga. opbygningen af array'et, som det er nu TROR jeg at har alle data liggende dirrekte i arrayet, hvad jeg TROR kunne speede det lidt op var hvis det kun var referencen til dataene der skulle flyttes ved sortering.

Er der nogen der kan fortælle mig om jeg tager helt fejl, og/eller måske har en bedre løsning.

God sommer

/Philip
Avatar billede Slettet bruger
05. juli 2006 - 09:42 #1
Var det ikke en mulighed at du kun havde data i dine arrays istedet for, som det ser ud i eksemplet, har den fulde markup. Du kunne ved bare generer f.eks. div'erne når det skal skrived ud, kunne jo også være at sorteringen på den måde også var lidt mere lige til.
Avatar billede phliplip Nybegynder
05. juli 2006 - 09:51 #2
Hej Kryptos,

Ok.. dårligt eksempel, det er faktisk kun de 2 eneste steder i mit array at der ligger markup. Resten af array'et bliver bygget op med forskellige objects.

fx.

function partnerInArray(n) {
  for(var x = 2; x < s.length; x++) {
    if(s[x][0][0].getPid() == n) return x;
  }
  return false;
}

function addPartner(pid, name, url, img, cpc) {
  if(partnerInArray(pid) === false) {
    var x = s.length;
    if(!s[x]) {
      s[x] = new Array();
    }
    s[x][0] = new Array(new Partner(pid, name, url, img, cpc));
    s[x][1] = new Array(new Sorting(1, x));
  }
}
Avatar billede langthjem Nybegynder
05. juli 2006 - 10:35 #3
Hvilken sorterings algoritme bruger du?
Måske du skulle overveje en anden algoritme, du kan afprøve nogle her: http://cg.scs.carleton.ca/~morin/misc/sortalg/
Avatar billede langthjem Nybegynder
05. juli 2006 - 10:57 #4
Jeg tror det vil hjælpe at du skifter fra en Bubblesort (som jeg vil gætte på at du bruger) til en Mergesort som er meget hurtigere.
Avatar billede phliplip Nybegynder
05. juli 2006 - 11:14 #5
Det er en nok en bubblesort jeg bruger, men har lige lidt svært ved at overskue at lave en mergesort på et multidim array :-(
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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