Обеспечивает ли Composer какую-либо производительность по сравнению с Zend Loader в ZF2?

ZF2 использует Composer для управления пакетами и их распространения. Мой вопрос заключается в том, обеспечивает ли это повышение производительности по сравнению с Zend Loader?

1 ответ

Во-первых, Zend\Loader это просто пространство имен и представляет множество классов, таких как фабрики, автозагрузчики, загрузчики плагинов, загрузчики модулей и т. д. Итак, Zend Loader ==! Composer и сравнивать разные понятия, как правило, неправильно.

Во-вторых, composer не является "менеджером пакетов", и вы можете использовать ZF2 без composer. Из документации:

Композитор не является менеджером пакетов. Да, он имеет дело с "пакетами" или библиотеками, но управляет ими отдельно для каждого проекта, устанавливая их в каталоге (например, вендоре) внутри вашего проекта. По умолчанию он никогда не установит что-либо глобально. Таким образом, это менеджер зависимостей.

Основная задача композитора - обеспечить простое управление зависимостями между библиотеками, стандартизировать процесс автозагрузки и т. Д., А не производительность. Он также подготавливает файл автозагрузки для вашего проекта для всех классов в сторонних библиотеках, установленных компоновщиком. Это делает нашу жизнь лучше.

С другой стороны, пространство имен Zend Loader и связанные с ним классы. Это краткое резюме из официальной документации действительно просто:

ZF2 использует несколько стратегий автозагрузки; Например, у вас может быть карта классов для ваших наиболее часто используемых классов, но вы хотите использовать автозагрузчик стиля PSR-0 для сторонних библиотек.

Краткое описание классов в пространстве имен Zend Loader:

  • ClassMapAutoloader: он разработан с учетом производительности. Избегает ненужных операций файловой системы при автозагрузке.
  • StandardAutoloader: это PSR-0-совместимый автозагрузчик. Предполагается отображение 1:1 пространства имен + имя класса в файловую систему.
  • ModuleAutolader: специальная реализация интерфейса Zend\Loader\SplAutoloader, используемая Zend\ModuleManager для автоматической загрузки классов модулей из разных источников.
  • PluginClassLoader: Разрешает имена плагинов -> to -> имена классов, предоставляя простой механизм для наложения имен плагинов на имена классов для последующего поиска.

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

Другие вопросы по тегам