Posts Tagged ‘performance’
Flash-console логгер/дебаггер - швейцарский нож разработчика
Обнаружил на ruFlash интересную утилиту Flash-console логгер/дебаггер. Надо будет протестировать. 
Обычно я пользуюсь либо традиционным трейсом, во flash IDE и SWFProfiler для отображения информации о состоянии памяти и framerate, либо встроенным дебаггером той же flash IDE. Очень спартанский набор, да.
Однако с переходом на 64-bit windows7 начались постоянные проблемы с дебаг-версией flash плеера - постоянно вешает мне файрфокс. Это очень, очень раздражает. Тут как раз может такая утилитка пригодится, т.к. она не требует этой дебаг версии.
Интерфейс этой штуки конечно не назовешь удобным и понятным, но это не главное. Посмотрим, как она покажет себя в деле.
На вскидку несколько возможностей flash-console, которые меня приятно удивили:
- просмотр дерева объектов под курсором мыши
- экранная линейка с увеличенным просмотром
- графический мониторинг памяти + fps
- принудительный запуск гарбадж-коллектора
- инспектор объектов! Да, блин, можно посмотреть поля и методы объекта и текущие значения переменных!
- несколько каналов трейсинга - очень актуально, у меня иногда output трейса так забивается мессагами, что я иногда неделю не могу найти из какого места в коде этот спам у меня генерится, а тут фильтровать можно.
P.S. попробовал лично. Просто офигенная штука! Меня впечатлила примочка - показывающая полностью все объекты находящиеся по курсором в виде дерева. Мне лично это помогло обнаружить, что некоторые негодяйские мувиклипы вовсе не удалялись со сцены, как я полагал, а висели там с нулевой прозрачностью и захламляли память. Так что штука мегаполезная. Однозначно рекомендую!
Еще несколько важных фактов о производительности Pixel Blender’а
В блоге Дэвида Ленартса появился интересный тест производительности Пиксел Блендера. В частности интересно, что при работе с фильтами Pixel Blendera:
BitmapData быстрее чем ByteArray а он в свою очередь быстрее, чем Vector.<Number> !
- ShaderJob on BitmapData: 92-99ms
- ShaderJob on ByteArray: 147-172ms
- ShaderJob on Vector.<Number>: 167-192ms
- BitmapData is ~40% быстрее чем ByteArray
- BitmapData is ~47% быстрее чем Vector.<Number>!!
Операторы сравнения дают значительное падение производительности.
В своем тесте Дэвид делает тест, где вычисления не производятся для пикселей с alpha==0. При этом даже если таких пикселей около половины - время вычислений вырастает:
- BitmapData: 134-192ms - ~47% потеря скорости!!!
- ByteArray: 147-172ms - ~22% потеря скорости
- Vector: 192-213ms - ~27%потеря скорости
Не используйте input в качестве output
Лучше иметь два разных BitmapData. Дело в том что Flash player делает временную копию источника, что увеличивает время вычислений фильтра.
- BitmapData: 207-218ms - ~30% потеря скорости
- ByteArray: 256-271ms - ~65% потеря скорости
- Vector: 276-293ms - ~40% потеря скорости
На своем опыте могу сказать, что все эти нюансики складываются иногда в очень неприятные тормоза.