performance - Composer 在 ZF2 中是否提供超过 Zend Loader 的任何性能

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

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

最佳答案

首先,Zend\Loader 只是命名空间并在引擎盖下呈现多个类,如 Factories、Autoloaders、PluginLoaders、ModuleLoaders 等...所以,Zend Loader != = Composer 并且比较不同的概念通​​常是错误的。

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

Composer is not a package manager. Yes, it deals with "packages" or libraries, but it manages them on a per-project basis, installing them in a directory (e.g. vendor) inside your project. By default it will never install anything globally. Thus, it is a dependency manager.

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

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

ZF2 employs multiple autoloading strategies; as an example, you may have a class map for your most used classes, but want to use a PSR-0 style autoloader for 3rd party libraries.

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

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

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

关于performance - Composer 在 ZF2 中是否提供超过 Zend Loader 的任何性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18611074/

相关文章:

c++ - 测量 ARM Cortex-A15 的缓存访问时间/周期

macos - 滚动时 NSTableView 非常滞后

javascript - 高效的实时 HTML 表格

permissions - ZF2 ACL -> 允许 Controller 中的所有操作

laravel - 如何在 Windows 上通过 Laravel Installer 安装 Laravel?

git - 更新 ".git directory is missing"时 Composer 出错

javascript - CDN 托管的 javascript 库与下载和缩小

php - ZF2 使用 PHP5 与 PHP7

php - ZF2 : how to implement different configs for production, 暂存等?

php - 在 RecaptchaField.php 中找不到 SilverStripe 类 'SpamProtectorField'