测试此代码在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对多个玩家进行了很多非常深入的性能测试。 –