почему некоторые фреймворки работают медленно? - PullRequest
0 голосов
/ 03 февраля 2010

почему некоторые фреймворки работают медленно?

например, как получается, что Zend Framework медленнее, чем воспламенитель кода? если вы не используете много классов, просто выбрали классы, которые вам нужны, то это не должно замедлиться?

Вы вынуждены использовать много классов с Zend Framework или они предварительно загружают много классов автоматически?

Ответы [ 3 ]

1 голос
/ 03 февраля 2010

Зависит от того, насколько они позаботились о скорости при написании кода фреймворка. CodeIgniter был написан удивительно, всегда помня о скорости. Кроме того, большие рамки автоматически загружают много гаек и болтов, замедляя каркас. Однако, если у вас есть опыт работы с любой из этих платформ, вы можете значительно ускорить каркас, отфильтровав то, что, по вашему мнению, не нужно для вашего текущего проекта.

0 голосов
/ 29 марта 2011

Есть некоторые вещи, которые вы не можете победить.

Любые рамки могут быть

  • Simple
  • Extensible
  • Fast
  • Понятный
  • ...

Но вы не можете иметь все сразу. Это не может быть быстрым и расширяемым. Если он расширяемый, он должен проверить, хотите ли вы использовать внутренний класс или свой собственный. Он должен определить интерфейсы для всего. Поэтому он должен загружать много файлов (для классов и интерфейсов, тезисов, ...). Обратите внимание на разницу между классом загрузки MySQLDB class (один класс для одной цели) и DbLayer_Interface, DbLayer_Abstract, DbLayer_MySQL (полная инфраструктура, где вы можете заменить любую его часть).

Также с легкостью приходит немного магии. Чем больше фреймворк делает для вас, тем больше "волшебства" происходит под капотом. Магия может быть быстрой, так как она делается для одной цели и не должна проверять, хотите ли вы что-то изменить.

Вот почему ZF медленнее, чем CI и другие. Любой класс можно заменить. Например, мы расширили и внедрили собственный класс Db_Select, который автоматически обрабатывает многоязычные имена столбцов. Вы делаете выбор как SELECT table.name_en FROM table, а логика, лежащая в основе, превращает его в SELECT table.name_en, table.name_fr, table.name_de FROM table на лету ... Это сила, которую вы получаете в обмен на скорость;)

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

Zend_Loader_Autoloader автоматически загружает классы, когда они запрашиваются, поэтому «ненужных классов» нет. Есть несколько руководств по ускорению работы приложений на платформе Zend, т.е. комментирование «require_once's» и использование PluginLoader, включающего кеш файла, объясненный здесь (наряду с некоторыми другими методами)

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