【发布时间】:2012-08-25 20:42:35
【问题描述】:
在 Flash 中测试这段代码:
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,并确保确实存在差异?
-
你说的“别人慢”是什么意思?其他编程语言?哪些?
-
一个小注解:如果您有一个发布/调试版本(FlashIDE 中的“允许调试”设置),这很重要,并且结果也可能在发布和调试播放器中有所不同。 jacksondunstan.com 对多个玩家进行了大量非常深入的性能测试。
标签: performance actionscript-3 post-increment pre-increment