Verifica questo codice in Flash:Perché i = i + 1 è più veloce di i ++?
var i:int = 0;
for (var j:int = 0; j < 5000000; j++)
{
i=i+1;
}// use about 300ms.
i = 0;
for (var j:int = 0; j < 5000000; j++)
{
i++;
}// use about 400ms
i = 0;
for (var j:int = 0; j < 5000000; j++)
{
++i;
}// use about 400ms too
Perché i=i+1
più veloce in ActionScript 3, quando è più lento in altri?
Spiacente, faccio qualche errore. Il codice sopra riportato usa la stessa ora. ma se lo metti in funzione, il risultato sarà diverso.
var i:int;
var j:int;
var startTime:Number;
function func1():void
{
i = i + 1;
}
function func2():void
{
i++;
}
startTime = getTimer();
i = 0;
for (j = 0; j < 10000000; j++)
{
func1();
}
trace(getTimer() - startTime);//5 times:631,628,641,628,632
startTime = getTimer();
i = 0;
for (j = 0; j < 10000000; j++)
{
func2();
}
trace(getTimer() - startTime);//5 times:800,814,791,832,777
Riesci a volte 10 la lunghezza del loop, e assicurarsi che ci sia davvero una differenza? – scientiaesthete
Cosa intendi con "più lento negli altri?" Altri linguaggi di programmazione? Quale? –
Una piccola nota a margine: è importante se si dispone di un'impostazione release-/debugbuild ('permesso il debugging' in FlashIDE), e i risultati potrebbero anche variare in un release e debugplayer. http://jacksondunstan.com ha molti test di prestazione molto approfonditi per diversi giocatori. –