代码之家  ›  专栏  ›  技术社区  ›  Corey Ballou

php5框架:自动加载和操作码缓存

  •  10
  • Corey Ballou  · 技术社区  · 15 年前

    许多框架利用 spl_autoload_register() 用于动态加载类(即控制器和模型)。有一些关于自动加载和操作码缓存的文章。其中一篇文章有一个@cletus的响应,它引用了@rasmus的一些语句,这些语句对那些将apc用作操作码缓存的人来说是不合适的:

    对于不影响操作码缓存性能的自动加载的任何可能替代方案,似乎没有任何讨论。

    有没有办法绕过这样一个事实:自动加载的类不会被添加到字节码缓存中?

    如果没有,是否有其他方法可以动态加载将被缓存的类?

    1 回复  |  直到 15 年前
        1
  •  5
  •   Eric Coleman    15 年前

    关于这个话题似乎仍然有一些困惑,但是在大多数情况下,它归结为缓解vs性能。

    一个很好的邮件列表线程是zend frameworks邮件列表中的这个线程:

    http://n4.nabble.com/ZF-and-Autoloading-td640085i20.html

    现在,这里的相关性是因为如果继承自尚未定义的 类,您可以依赖autoload来定义它(尽管您也可以 依赖include),而实际上自动装载设备的存在可能 鼓励你使用这样的遗产。但这不是自动加载 这会带来麻烦(看看拉莫斯在 一些麻烦事的例子)。 所以正确的说法应该是“那些倾向于依靠自体移植的人” 也可以使用不受编译时绑定限制的代码”。看不见的 当然,作为自动加载错误,仅仅避免自动加载对 你还得重写你的代码以便 可能发生编译时绑定。它与 例如,使用“new”自动加载。

    关于上述影响的减缓,即 编译时绑定-代码确实变慢了一些 代码可能会在某些模糊的情况下给操作码缓存带来一些麻烦 (不是在自动加载的情况下,而是在定义了类的情况下 内部条件,或者,上帝禁止,不同的定义被创造 但这与使用 自动加载。 然而,经济放缓的程度似乎因 人们-这没什么(我重复说清楚- 没有什么 )比较 由于缺少操作码缓存而带来的性能优势 磁盘操作和编译阶段。你也许可以 构建一个人工基准,它将显示一些重要的 但我不相信任何真正的应用程序会注意到。

    来源: http://n4.nabble.com/ZF-and-Autoloading-td640085i20.html#a640092

    推荐文章