Производительность ExternalInterface: в поисках советов и рекомендаций - PullRequest
3 голосов
/ 28 октября 2008

Я использую Flex 3 в пользовательском интерфейсе приложения Windows (проигрыватель Flash в качестве встроенного элемента управления ActiveX) и передаю данные между ними с помощью ExternalInterface (главным образом в приложение Flex, а не out). Я нахожу, однако, что производительность довольно ужасна, особенно с большими (то есть, пользовательскими) объектами; чем больше EI-вызовов мы делаем, и чем больше пользовательских объектов передается, тем сложнее кажется снижение производительности.

Я предполагаю, что при сериализации этих объектов возникают большие накладные расходы, поэтому мне интересно, есть ли какие-либо передовые практики для использования ExternalInterface таким конкретным способом? По всей видимости, документации по этому вопросу пока еще немного.

Лучше, скажем, передать большой блок XML в элемент управления проигрывателя в виде строки и проанализировать его с помощью Flex, чем передавать его как пользовательский объект, как правило? Как приложениям Flex, требующим относительно тесной интеграции со своими хост-приложениями, лучше всего использовать ExternalInterface, не жертвуя при этом производительностью? Является ли производительность EI проблемой Adobe? Есть ли различия в реализации между игроками 9 и 10? Каких вещей нам следует избегать, чтобы максимально использовать эту функцию?

Заранее спасибо!

Крис

Ответы [ 2 ]

4 голосов
/ 02 июня 2009

Брэд Нойберг, похоже, приложил немало усилий, чтобы понять это. Он опубликовал обходной путь на

http://codinginparadise.org/weblog/2006/02/how-to-speed-up-flash-8s.html

4 голосов
/ 10 декабря 2008

Просто чтобы поделиться ответом с кем-то, кто может быть заинтересован, неофициальный ответ Adobe (подтвержденный несколькими инженерами Adobe на конференции MAX в прошлом месяце) заключается в том, что сбор, скажем, более 30 КБ или около того данных через ExternalInterface вызвать снижение производительности. Маленькие кусочки данных, нет проблем - но большие куски, независимо от типа и т. Д., Значительно замедляют процесс.

Очевидно, что это известная проблема, и, к сожалению, Flash 10, похоже, не предлагает много улучшений. Таким образом, в то же время, работоспособное решение - это использовать ExternalInterface для мелких вещей, но оставить более тяжелый подъем для URLLoader и парсеров XML или JSON. Надеюсь, что это поможет - если кто-то сталкивается с этим и нуждается в более подробном руководстве, не стесняйтесь связаться со мной напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...