PDA

View Full Version : Confronto codici Javascript


niciz
20-07-2011, 22:30
Ciao a tutti.. stavo cercando di migliorare uno script per rendere un animazione più fluida.. lo script può partire attraverso vari eventi e per questo all'interno vedete tanti if.. ho creato due versioni la prima quella iniziale e la seconda partendo dalla prima cercando di ottimizzarla.. Credo che l'ottimizzazione non mi sia uscita tanto bene infatti stavo per cancellarla ma poi ho ci ho ripensato e ho calcolato quanti if, assegnamenti e operazioni esegue lo script nei casi peggiori. Ecco i risultati:

1° script
If: 6 Assegnamenti: 6 Operazioni: 5
2° script
If: 4 Assegnamenti: 2 Operazioni 7

ora sono perfettamente a conoscenza che l'efficenza non si calcola in questo modo e vi sarei grato se qualcuno riuscisse a darmi qualche dritta :)..
voi cosa dite?

ecco qui gli script:
function evento(indice)
{ if(slot)
{ slot=false;
continua=false;
document.getElementById("evento_"+attuale).className="eventi"; //cambio la classe di quello selezionato prima e la imposto come un evento normale
prec=attuale;
//INDIVIDUO FONTE DELLA CHIAMATA
if(isNaN(indice))
{ if(indice=="destra") //pulsante Destra
{ if(attuale<n-1)
{ attuale++;
continua=true;
}
}
else //pulsante Sinistra
{ if(attuale>0)
{ attuale--;
continua=true;
}
}
}
else //pulsante lista
{ attuale=indice;
continua=true;
}
if(continua)
{ document.getElementById("evento_"+attuale).className='attuale';
var imm=document.getElementById("immagine");
AnimaTestoFuori();
Ruota(lista[attuale]);
intervalID=setInterval("effetto()",40);
}
else
{ slot=true;
document.getElementById("evento_"+prec).className='attuale';
}
}
}

function evento(indice)
{ if(slot)
{ slot=false;
document.getElementById("evento_"+attuale).className="eventi"; //cambio la classe di quello selezionato prima e la imposto come un evento normale
prec=attuale;
//INDIVIDUO FONTE DELLA CHIAMATA

if(!isNaN(indice)) //pulsante lista
{ attuale=indice;
document.getElementById("evento_"+attuale).className='attuale';
AnimaTestoFuori();
Ruota(lista[attuale]);
intervalID=setInterval("effetto()",40);
return;
}
else if(indice=="destra") //pulsante Destra
{ if(attuale<n-1)
{ attuale++;
document.getElementById("evento_"+attuale).className='attuale';
AnimaTestoFuori();
Ruota(lista[attuale]);
intervalID=setInterval("effetto()",40);
return;
}

}
else if(attuale>0) //pulsante Sinistra
{ attuale--;
document.getElementById("evento_"+attuale).className='attuale';
AnimaTestoFuori();
Ruota(lista[attuale]);
effetto();

return;
}
slot=true;
document.getElementById("evento_"+prec).className='attuale';

}
}

niciz
22-07-2011, 10:52
nessuno ha qualche idea?