Composer是否在ZF2中提供了Zend Loader的任何性能

时间:2013-09-04 10:12:16

标签: performance zend-framework2 composer-php zend-loader

ZF2正在使用Composer进行包管理和分发。我的问题是它是否提供了超过Zend Loader的任何性能提升?

1 个答案:

答案 0 :(得分:2)

首先,Zend\Loader只是名称空间,并提供了诸如Factories,Autoloaders,PluginLoaders,ModuleLoaders等多个类......所以,Zend Loader!== Composer并比较不同概念通常是错误的。

第二件事是,作曲家不是“包经理”,你可以在没有作曲家的情况下使用ZF2。来自documentation

  

Composer不是包管理器。是的,它涉及“包”或   库,但它在每个项目的基础上管理它们,安装它们   在项目内的目录(例如供应商)中。默认情况下会   从不在全球范围内安装因此,它是一个依赖管理器。

作曲家的主要关注点是在库之间提供简单的依赖关系管理,标准化自动加载过程等。而不是性能。它还为您的项目准备一个自动加载文件,用于由作曲家安装的第三方库中的所有类。这让我们的生活变得更好。

另一方面,Zend Loader命名空间和相关类。官方文档中的这个简短摘要非常简单:

  

ZF2采用多种自动加载策略;例如,你可以   有一个最常用类的类映射,但想要使用PSR-0   第三方图书馆的样式自动加载器。

关于Zend Loader名称空间下的类的简短摘要:

  • ClassMapAutoloader:它的设计充分考虑了性能。自动加载时避免不必要的文件系统操作。
  • StandardAutoloader:这是符合PSR-0标准的自动加载器。假设命名空间+类名与文件系统的1:1映射。
  • ModuleAutolader:Zend \ Loader \ SplAutoloader接口的一个特殊实现,由Zend \ ModuleManager用于自动加载来自不同来源的模块类。
  • PluginClassLoader:解析插件名称 - >到 - >类名通过提供一种简单的机制,用于将插件名称别名化为类名以供以后检索。

因此,如果您主要关心的是文件系统级性能,那么您应该专注于类映射自动加载和操作码缓存。 有许多指标会影响整体应用程序性能并且没有灵丹妙药来提升性能。