Протестировал скорость работы циклов и массивов во флексе.
Результаты интересные:
- Тип переменной цикла int или uint не играет роли для скорости самого цикла (точнее цикл по int быстрее цикла по uint на 0,9%);
- Обращения к массиву по индексу uint быстрее индекса int на 3%;
- Скорость цикла по int с преобразованием к индексу массива uint такая же, как если сразу завести цикл по uint и обращаться к массиву по индексу uint. (т.е. выиграть за счет п.1 не удается);
- При работе с массивом, циклы работающие с конца (i--), тормознее циклов работающих с начала (i++) на 3,7%;
- Попытки типизировать массив [ArrayElementType("Number")] ничего не дают. Эта фича не работает вообще вне Flex Builder;
- Объявление длины обрабатываемого массива как var то же, что и const;
- Переменную цикла можно объявить как const! Но никакой разницы с var нет;
- Локальность/глобальность обрабатываемого массива безразлична;
- Выносить вычисление размера массива из цикла действительно необходимо. Очень большие потери в скорости, например в 40%;
- Циклы while и for по скорости друг от друга не отличаются.
const len: uint = Arr.length;
for (var i: uint = 0; i < len; i++) {
Arr[i] = ...
}
...или так...
const len: uint = Arr.length;
var i: uint = 0;
while (uint(i++) < len) {
a[i] = ...
}
0 коммент.:
Отправить комментарий