Хобрук: Ваш путь к мастерству в программировании

Путаница в оптимизации Flash

Я новичок в Actionscript (v3), 20 лет работаю с C ++, и я просто пытаюсь разобраться в некоторых предостережениях производительности, которые я читаю.

Я проверил этот сайт:

http://www.nbilyk.com/optimizing-actionscript-3

и был до смерти напуган разделом «кода», в котором говорилось, что ActionScript должен выполнять динамический поиск при попытке найти статические методы в пакете. Дело в том, что неэффективно помещать ваши утилитарные функции (обычно математические функции) в их собственный пакет как статические функции, потому что он должен динамически искать пространство имен и метод каждый раз, когда вы его вызываете.

Это правда? Это совсем не то, что я ожидал, исходящий от C ++, и он действительно меняет то, как я структурирую свой код и библиотеки. Интересно, лучше ли иметь одноэлементную библиотеку утилит, которая является new () 'd один раз, содержащую методы как обычные общедоступные методы, чем иметь их статическими в другом пакете.

Есть ли другие подобные очевидные подводные камни?

Ваше здоровье,

Шейн


  • В общем: не беспокойтесь о такого рода оптимизации, пока после не обнаружите, что у вас возникла проблема. 12.01.2010
  • зависит от того, на каком уровне вы оптимизируете. Если его уровень архитектуры, то вы захотите сделать это заранее. 12.01.2010
  • Именно это влияет на архитектуру. то есть это влияет на то, получает ли пользователь моего кода доступ к функциям через синглтон, напрямую включает файл .as или использует статику. То, что ты не хочешь делать позже. 12.01.2010

Ответы:


1

Да, это правда. Вызов статических функций извне класса выполняется медленно. Я недавно тестировал это на себе, более 10 000 итераций: 220 мс для статики и 160 мс для вызова функции в экземпляре.

Другие советы - избегать компилятора Adobe. Недавно я начал использовать Haxe, который преобразуется в LLVM, а затем в код ABC (байтовый код ActionScript). Есть несколько скрытых кодов операций для работы с памятью, которыми пользуется Haxe (как и в Alchemy).

Говоря об алхимии, он скомпилирует C ++ -> LLVM -> ABC. Может быть полезно, если у вас много библиотек C ++. (кто-то портировал Doom, Hexen и Heritic на Flash таким образом)

РЕДАКТИРОВАТЬ: для всего, что связано с производительностью http://lab.polygonal.de/ и http://blog.joa-ebert.com - хорошие места для начала.

12.01.2010
  • хорошие ресурсы. Не уверен, но это тоже может пригодиться: Выступление Гранта Скиннера об оптимизации: gskinner.com/talks/quick есть несколько интересных сравнений 12.01.2010
  • Спасибо за ресурсы. На днях я наткнулся на HaXe, и он выглядел довольно круто, но я просто не хотел изучать еще один язык. Многие ли разработчики этим пользуются? 12.01.2010
  • Трудно сказать, но я считаю, что HaXe на данный момент больше нишевая. При этом к нему обращаются более опытные разработчики flash, поскольку они, как правило, стремятся повысить производительность и требуют большего от языка (встраивание, дженерики и т. Д.). Язык очень похож на AS3, поэтому его легко выучить. Хороший способ его использования - написать любые библиотеки типов производительности в HaXe и скомпилировать их в SWC (предварительно скомпилированную библиотеку). Затем SWC можно импортировать в любой старый проект AS3. 12.01.2010
  • Новые материалы

    Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
    LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

    Структуры данных в C ++ - Часть 1
    Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

    Как я опубликовал свое первое приложение в App Store в 13 лет
    Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

    Что в лицо
    Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

    Почему шаблоны проектирования и почему нет?
    Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

    Создание дизайна обуви с помощью машинного обучения
    Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

    GraalVM в 2022 году: итоги года
    2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..