我意识到理论上的逐位移位比AS3中的乘法和除法更快(我也对编译为AIR时的答案感兴趣)。
例如:a << 3
vs a * 8
但是我很谨慎,编译后可能不是这种情况,我不知道flash是如何编译AS3的,但我觉得他们会在可能的表达式中交换它们的按位等价物。
有没有证据表明编译后按位操作更快?
答案 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
所以,正如你所看到的,你不必担心这些事情,编译器会为你做这件事。