Ранее я уже писал о быстродействии отрисовки во флэше и о cacheAsBitmap'е в частности.
Но сейчас передо мной встал конкретный вопрос — что быстрее — выставить cacheAsBitmap = true, или же перевести картинку в растр и загрузить ее как PNG. При условии, что картинка статична, но очень сильно нагружена разными градиентами и прочим.
Для решения вопроса я набросал небольшой тест.
Вывод прост — можете смело пользоваться cacheAsBitmap и не бояться просадок быстродействия.
Более того — картинка с cacheAsBitmap настолько быстро выводится на экран, что быстродействие не отличается от того варианта, когда эта картинка не выводится вообще.
Стоит только помнить, что cacheAsBitmap не будет работать в случаях:
Но сейчас передо мной встал конкретный вопрос — что быстрее — выставить cacheAsBitmap = true, или же перевести картинку в растр и загрузить ее как PNG. При условии, что картинка статична, но очень сильно нагружена разными градиентами и прочим.
Для решения вопроса я набросал небольшой тест.
Условия.
- Имеется некая игровая сцена, загруженная передвигающимися объектами.
- Поверх нее выводятся статичные элементы интерфейса с кучей радиальных градиентов, кривых, альф и т.п. (стоит отметить, что альфы не выходят за пределы клипа и не требуют микширования с основной сценой)
- В тесте мы меняем способ отрисовки только статичных элементов интерфейса. Движущиеся динамические просто имитируют нагрузку.
Результаты.
- вектор, без кэша: 33 fps
- cache as bitmap: 46 fps
- png: 46 fps
- отключенная картинка: 46 fps
Вывод.
Вывод прост — можете смело пользоваться cacheAsBitmap и не бояться просадок быстродействия.
Более того — картинка с cacheAsBitmap настолько быстро выводится на экран, что быстродействие не отличается от того варианта, когда эта картинка не выводится вообще.
Стоит только помнить, что cacheAsBitmap не будет работать в случаях:
- вращения объекта
- изменения масштаба
- изменения альфы