As3 SWF инъекция байт-кода - PullRequest
3 голосов
/ 22 декабря 2010

В настоящее время я работаю над инструментом, который позволяет нам просматривать функции, которые отнимают много времени в большом проекте as3 / Air (более 2000 классов) для выявления узких мест и функций, которые нуждаются в оптимизации.

OneЧтобы добиться этого, используйте Flash Builder Profiler, но он очень медленный и падает через 1 или 2 минуты.Другой способ - вручную написать файл с наиболее важной информацией, требующей много времени.Но это ручной процесс, и я не могу охватить все функции проекта.

Поэтому я ищу способ внедрить байт-код as3 непосредственно в скомпилированный SWF.С помощью такого инструмента я буду вставлять журнал после каждого вызова функции, и поэтому я смогу охватить все функции проекта.

Некоторые библиотеки as3 существуют для этой цели ( AS3Commons ByteCode ), ноне работает нормально с моим проектом (я получаю ошибку разбора), а as3 работает медленно.

Ответы [ 2 ]

10 голосов
/ 22 декабря 2010

Я вижу четыре варианта:

  • Во-первых, я думаю о Аппарат Джоа Эберта (спасибо, чувак), который предоставляет инструменты для байт-кода ABCоптимизация, а также очень глубокий API для манипулирования этим байт-кодом.Он написан на Scala, так что это хороший момент для изучения этого удивительного языка.

  • Кроме того, вы можете написать свой собственный инструмент.Формат ABC (байт-код ActionScript) хорошо документирован , а также его контейнер SWF-формат .Может быть не так уж сложно проанализировать оба файла на предмет наличия интересных тегов и добавить необходимые инструкции в байт-код.

  • При более "простом" подходе компилятор SWF и ABC большинство из насusing, mxmlc, с открытым исходным кодом.Вы можете попытаться редактировать код компилятора напрямую, чтобы сделать то, что вы хотите.Все, что вам для этого нужно, находится на веб-сайте Adobe OpenSource Flex SDK .

  • И в качестве альтернативного ответа на ваш вопрос вместо попытки вставить байт-код вSWF (который всегда будет влиять на производительность глобального приложения), вы можете использовать потрясающие опции AS3Trace / AS3DynamicProfile на mm.cfg, чтобы получить полный журнал выполнения каждой функции, а также информацию о профилировании кодов операцийвыполнение.Подробнее об этом здесь .

В заключение, такой инструмент внешнего профилирования будет отличным приложением, которое будет с открытым исходным кодом и выпущено для сообщества, поскольку все больше и больше"большие" проекты AS3 выходят в эти дни.;)

4 голосов
/ 14 января 2011

Наконец, я использовал скрипт Python для добавления As3 к каждому файлу скрипта действия. Мои работы можно найти здесь: http://code.google.com/p/as3-performances-analyzer/

...