Основные идеи:
- не перегружать условия и операторы (не понял)
- не использовать объекты, если заранее известно, с какие свойства будут задействованы в итоге.
- При чтении массива, сразу приводить тип экземпляров его элементов.
- По возможности использовать Integer.
- Использовать битовые операторы.
- Использовать типизированные массивы с фиксированной длинной.
- "a += b" быстрее чем "a = a + b"
- "a++" быстрее чем "a = a + 1"
- вышесказанное не действительно для оператора вычитания
- "value*.5" быстрее чем "value/2"
- деление на 2: "10 >> 1"
- умножение на 2: "10 <<>
- однако, битовые операции не оптимальны для Number
- Округление:
var n:Number = 1.5;
test:Number = Math.floor(n); - очень медленно (1733)
var test:uint = uint(n); - быстро (176)
var test:int = int(n); - быстро (157)
var test:Number = n >> 0; - быстро (178)
var test:Number = Math.ceil(n); - медленно
var test:uint = n == uint(n) ? n : uint(n)+1; - медленно (650)
var test:int = n == int(n) ? n : int(n)+1; - быстро (384) - Абсолютное значение, Math.abs:
var n:Number = -1.5;
n = Math.abs (n); - очень медленно (1539.92)
n = n < n =" n" class="blsp-spelling-error" id="SPELLING_ERROR_21">if (n < n =" -n;">
Итак (с учетом Number):
- Деление на 2: "n * 0.5"
- Умножение на 2: "n + n"
- Math.floor: "n >> 0"
- Абсолютное значение: "if (n < n =" -n">
2 комментария:
А откуда вся эта информация?
Например вот это
"a += b" быстрее чем "a = a + b";
Неужели не производится никакой оптимизации кода??
Это оч старый пост. Очевидно, что свежие компиляторы и плееры производят оптимизацию.
Информацию об этом, видимо, где-то можно найти.
Отправить комментарий