as3 {} vs new Object

时间:2011-12-05 02:38:37

标签: actionscript-3 instantiation

的区别,优点或缺点是什么
var obj = {};

VS

var obj = new Object();

我所知道的是第二个例子需要更长的时间。有什么真正的好处吗?

**编辑**

function loop() {
    var start = (new Date()).getTime();
    for(var i = 0; i < 1000000; ++i) {
        //var b = {}; // takes ~548ms on my machine
        var b = new Object(); // takes ~287ms on my machine
    }
    trace((new Date()).getTime() - start);
    setTimeout(loop, 1);
}
loop();

如果您在var b = {};var b = new Object();之间切换,您会看到性能差异。他们与我的回忆以及我在问题中提到的内容相反。

2 个答案:

答案 0 :(得分:3)

据我所知,它们是等价的。通过“第二个例子需要更长的时间”,我假设你的意思是只是及时输入语句,并且可能是一个可能无法估量的时间来评估 - 但执行时间应该相等。

答案 1 :(得分:3)

有些测试告诉我,new Object()的速度要快一些,但这只是{}语法的比较,而不是您可能想要做的其他任务。

测试功能:

function time(amount:int, test:Function):Number
{
    var average:Number = 0;
    var averages:Array = [];

    for(var n:int = 0; n<amount; n++)
    {
        var start:Number = getTimer();

        test();

        averages[averages.length] = getTimer() - start;
    }

    for each(var a:Number in averages) average += a;

    return average / averages.length;
}

然后我们的两个测试科目:

function short():void
{
    for(var i:int = 0; i<1000000; i++) var obj:Object = {};
}

function long():void
{
    for(var i:int = 0; i<1000000; i++) var obj:Object = new Object();
}

结果:

trace(time(5, short));  // 278.6
trace(time(5, long));   // 153.6

使用new Object()大约有45%的速度提升,但您会注意到总时间仍然不明显(即使是1,000,000次迭代)。

就个人而言,我还是会坚持使用{}语法,以简化其他个人偏好的原因。