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)
为什么他们使用第一种方法而不是第二种?
还要考虑优化.即使你可以声明你的变量没有类型,比如
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)
结果显示平均机器上的每一轮.无论上面的示例中的数字是什么,关键是要查看速率:
在a和b的情况下,我们没有给变量赋一个类型.在第三种情况下(c.)我们给它一种类型,我们达到了6.14倍的速度增加.
在d和e的情况下,你可以看到如果你真的特别设置了类型会发生什么:整数和无符号整数.这种情况,所以如果你使用整数,你可以获得的速度非常大(10倍).
在编写随机函数,大型计算或复杂引擎时,请考虑这一点.