按位运算有助于提高性能吗?

时间:2011-11-10 11:00:22

标签: flash actionscript-3 air

我意识到理论上的逐位移位比AS3中的乘法和除法更快(我也对编译为AIR时的答案感兴趣)。

例如:a << 3 vs a * 8

但是我很谨慎,编译后可能不是这种情况,我不知道flash是如何编译AS3的,但我觉得他们会在可能的表达式中交换它们的按位等价物。

有没有证据表明编译后按位操作更快?

1 个答案:

答案 0 :(得分:7)

我做了一些测试。

<强>测试1:

var t:Number = getTimer();
for (var i:Number=0; i<30000000; i++) {
    var a:uint = Math.round(Math.random()*100);
    a *= 8;
}
var t1:Number = getTimer()-t;
trace(t1);

输出

[trace] 8999

<强>的Test2:

var t : Number = getTimer();
for (var i:Number=0; i<30000000; i++) {
    var a:uint = Math.round(Math.random()*100);
    a <<= 3;
}
var t1:Number = getTimer()-t;
trace(t1);

输出:

[trace] 8987

<强> Test3的:

var t:Number = getTimer();
for (var i:Number=0; i<30000000; i++) {
    var a:uint = Math.round(Math.random()*100);
    a *= 13;
}
var t1:Number = getTimer()-t;
trace(t1);

输出:

[trace] 8918

所以,正如你所看到的,你不必担心这些事情,编译器会为你做这件事。