var a:Number = 5 vs var a = 5(ActionScript)

tak*_*shi 1 flash actionscript-3

昨晚我在Flash中想到了这个问题

var a:Number = 5;
var a = 5;
Run Code Online (Sandbox Code Playgroud)

什么宣言更好?第一次声明是否更快并且占用更少内存?AS的所有示例都包含第一个声明方法(例如http://actionscriptexamples.com/2010/05/03/getting-started-with-the-tlftextfield-class-in-actionscript-3-0-and-flash-cs5/).

var tlfTxt:TLFTextField = new TLFTextField();
Run Code Online (Sandbox Code Playgroud)

为什么他们使用第一种方法而不是第二种?

ane*_*nge 7

还要考虑优化.即使你可以声明你的变量没有类型,比如

var a:* = 5什么可以使用很棒,仍然考虑以下优化测试:

var a = 5;
var b:* = 5;
var c:Number = 5;
var d:int = 5;
var e:uint = 5;

var time_start:Number = getTimer();

for(var i:int = 0; i < 10000000; i++)
{
    a += 1;
    //b += 1;
    //c += 1;
    //d += 1;
    //e += 1;
}

var time_stop:Number = getTimer();

trace(time_stop - time_start, "ms");

//a.) 650 ms
//b.) 651 ms
//c.) 106 ms
//d.) 69 ms
//e.) 69 ms
Run Code Online (Sandbox Code Playgroud)

结果显示平均机器上的每一轮.无论上面的示例中的数字是什么,关键是要查看速率:

ab的情况下,我们没有给变量赋一个类型.在第三种情况下(c.)我们给它一种类型,我们达到了6.14倍的速度增加.

de的情况下,你可以看到如果你真的特别设置了类型会发生什么:整数和无符号整数.这种情况,所以如果你使用整数,你可以获得的速度非常大(10倍).

在编写随机函数,大型计算或复杂引擎时,请考虑这一点.