Облако тегов
Последние записи
- Maven+Spring+Hibernate+dbunit
- Водяные знаки
- Ошибка при установке AIR - Error #2032
- Контекстное меню в AdvancedDataGrid
- Повышение производительности AS3 приложений
- AdvancedDataGrid cортировка
- Создание Flex-приложений c использованием Parsley. Часть 3, MVC
- Создание Flex-приложений c использованием Parsley. Часть 2, обмен данными
- Создание Flex-приложений c использованием Parsley. Часть 1, связывание
- Принципы организации выкладываемых примеров
Полезные ссылки
Природа не понимает шуток. Она всегда честна, всегда серьёзна, всегда сурова. Она всегда права, а ошибки и промахи делают только люди. Человек, который относится к природе с пренебрижением, не способен её оценить, и только понимающему, чистому и правдивому, она покоряется и открывает свои тайны.
Иоган Вольфнг фон Гёте
Большое спасибо
| Повышение производительности AS3 приложений |
| 09.10.2009 10:28 | ||||||
|
Данную статью я взял (без разрешения) из блога http://gorbatov.blogspot.com/2008/03/as3.html. Просто, чтобы не потерять для себя. От себя ни чего не добавлено и не исправлено.
Здесь представлены некоторые приемы, которые помогут повысить производительность наших приложений:
1) Создавайте константы для часто используемых объектов типа new Point(0,0) или new Rectangle(0,0,320,240): //вызов 100000 раз: 75мсБыстрее на 838% 2) Сократите указания на статические члены классов. Вместо этого старайтесь использовать переменные пакета: //15мс на 66% быстрее 3) Сохраняйте getter свойства в локальных переменных при их использовании более одного раза. somesprite.graphics.clear();4) Создавайте собственные reflection-методы вместо использования getDefinitionByName(getQualifiedClassName(object))
utils reflection быстрее на 5489% 5) Страрайтесь использовать строгое типизирование 6) Приводите к нужным типам, например, при чтении из массива. Быстрее будет обращаться к image var image: BitmapData = images[index];7) Где возможно, используйте int вместо Number 8) Операторы побитового сдвига работают быстрее: Побитовый сдвиг влево быстрее на 300% при умножении на любую степень двойки: x = x * 2;Побитовый сдвиг вправо быстрее на 350% при делении на любую степень двойки: x = x / 2;Извлечение компонентов цвета: //24bitОбъединение компонентов цвета: //24bit9) Обмен значениями численных переменных без использования временной переменной: var t:int = a;Быстрее на 20%. 10) Инкремент/декремент. Внимание: это пример понижения производительности, но зато есть возможность понизить читабельность кода для врагов:) i = -~i; // i++11) Смена знака с помощью NOT или XOR (говорят на 300% быстрее): i = -i;12) Подсчет остатка Если делитель является степенью двух, то остаток можно подсчитать быстрее на 600% следующим образом: остаток = делимое & (делитель - 1); x = 131 % 4;13) Проверка на четность/нечетность: isEven = (i % 2) == 0;Быстрее на 600%. 14) Абсолютное значение. Версия 1 быстрее на 250%, чем Math.abs(), а версия 2 быстрее на 20%, чем версия 1. //версия 115) Сравнение двух числе на равенство знаков eqSign = a * b > 0;На 35% быстрее. 16) Быстрое конвертирование цвета из R5G5B5 в R8G8B8 R8 = (R5 << 3) | (R5 >> 2) G8 = (R5 << 3) | (R5 >> 2) B8 = (R5 << 3) | (R5 >> 2) 17) a++ быстрее, чем a = a + 1 и т.п. 18) Умножение быстрее деления. Лучше использовать a = b*.5 вместо a = b / 2 19) int(1.5) быстрее, чем Math.floor(1.5) Аналогично int(1.5) + 1 быстрее, чем Math.ceil(1.5)
Powered by !JoomlaComment 4.0alpha3
!joomlacomment 4.0 Copyright (C) 2009 Compojoom.com . All rights reserved." |