測試此代碼在Flash:爲什麼i = i + 1比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
爲什麼i=i+1
在ActionScript 3快時,它在別人慢半拍?
對不起,我犯了一些錯誤。上面的代碼使用同一時間。 但如果把它放到函數中,結果會不一樣。
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
您可以10倍環路長度,並確保真的有區別嗎? – scientiaesthete
你是什麼意思「其他人比較慢?」其他編程語言?哪個? –
一個小方面說明:如果你有一個release-/debugbuild(在FlashIDE中的'允許調試'設置),那麼這很重要,並且結果在發佈版和調試版中也會有所不同。 http://jacksondunstan.com對多個玩家進行了很多非常深入的性能測試。 –