Побитовые операции помогают производительности? - PullRequest
1 голос
/ 10 ноября 2011

Я понимаю, что побитовое смещение в теории быстрее, чем умножение и деление в AS3 (мне также интересен ответ при компиляции в AIR).

Например: a << 3 против a * 8

Однако я опасаюсь, что после компиляции это может быть не так, я не знаю точно, как Flash компилирует AS3, но у меня есть ощущение, что они будут обмениваться, где это возможно, выражениями для их побитовых эквивалентов.

Есть ли доказательства того, что битовая операция после компиляции выполняется быстрее?

1 Ответ

7 голосов
/ 10 ноября 2011

Я сделал несколько тестов.

Test1:

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

Итак, как вы видите, вам не нужно беспокоиться о таких вещах, компилятор сделает это за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...