Классы, статические методы или методы экземпляров - потребление памяти и размер исполняемого файла на скомпилированных языках? - PullRequest
4 голосов
/ 18 февраля 2010

Меня постоянно интересует это, чтобы попытаться улучшить производительность и размер моих SWF-файлов Flex. Как классы, статические методы и методы экземпляров влияют на производительность и размер окончательно скомпилированного «исполняемого файла»? Подумав, как можно применить что-то вроде HAML и Sass для Flex ...

Скажем, я создаю очень большой интерфейс администратора с множеством компонентов и представлений, и к каждому из этих компонентов применяется объект Skin (на примере Spark Skinning Architecture для Flex ).

Теперь я хочу добавить 10 различных эффектов к каждому скину (скажем, на экране 100 компонентов, то есть 1000 созданных экземпляров эффектов). Что лучше:

  1. Пусть каждый эффект является классом (BlurEffect, GlowEffect ...) и добавьте эти 10 к скину.
  2. Пусть все эффекты будут методами экземпляра в одном большом классе, скажем "MultiEffect.as", и добавьте этот класс к скину, на который ссылаются как multiEffect.glow().
  3. У всех эффектов должны быть статические методы в одном одноэлементном классе "EffectManager.as" и просто ссылаться на эффекты в скине через EffectManager.glow(this).

So

  • Классы с несколькими эффектами на кожу, против
  • Один класс Эффект на скин, с методами экземпляра, против
  • Один класс эффектов глобально, со статическими методами

Как эти вещи влияют на память и размер исполняемого файла (размер swf в этом примере)? Я знаю, что классы являются лучшими методиками ООП, и что статические методы медленнее, чем методы экземпляров, и что следует избегать синглетонов, поэтому речь идет не о производительности обязательно. Подробнее о памяти (которая в некоторых случаях будет меньше) и о размере файла.

1 Ответ

0 голосов
/ 18 февраля 2010

Не удалось найти такую ​​информацию для Flex, но для Java (которая не должна быть слишком разной) накладные расходы на создание объекта составляют всего 8 байт памяти.

Это означает, что, если мы говорим о 1000 экземплярах, накладные расходы на использование объектов для каждого экземпляра не превышают 8 КБ - незначительно.Если в 100 раз больше, это все равно 800 КБ, что все равно ничто.

Итак, повторяя предыдущие ответы, выберите вариант, который дает вам лучший дизайн.

О, и разница в конечном размере файлаэто почти ничего

...