【问题标题】:Does Composer provide any performance over Zend Loader in ZF2在 ZF2 中,Composer 是否提供优于 Zend Loader 的任何性能
【发布时间】:2013-09-07 19:08:05
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    首先,Zend\Loader 只是命名空间,并在后台提供多个类,如工厂、自动加载器、插件加载器、模块加载器等......所以,Zend Loader !== Composer 比较不同的概念通​​常是错误的。

    第二件事是,composer 不是“包管理器”,您可以在没有 composer 的情况下使用 ZF2。来自documentation

    Composer 不是包管理器。是的,它处理“包”或 库,但它在每个项目的基础上管理它们,安装它们 在项目内的目录(例如供应商)中。默认情况下会 永远不要全局安装任何东西。因此,它是一个依赖管理器。

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

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

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

    关于 Zend Loader 命名空间下的类的简短总结:

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

    因此,如果您主要关心文件系统级性能,您应该关注类映射自动加载和操作码缓存。 影响整体应用程序性能的指标有很多,没有灵丹妙药可以提高性能。

    【讨论】:

    • 感谢您的澄清。我主要想知道composer的自动加载功能的性能是否优于zend loader。我正在使用 ClassMapAutoloader 加载模块的文件。 Zend 框架文件的加载怎么样。 StandardAutoloader 会更好还是 Composer 的加载功能更好。
    猜你喜欢
    • 2013-11-12
    • 2013-10-20
    • 2019-12-05
    • 2014-11-25
    • 1970-01-01
    • 2012-08-06
    • 2015-11-18
    • 2019-04-19
    • 2013-11-22
    相关资源
    最近更新 更多