【问题标题】:Does APC lazy loading increase performance?APC 延迟加载会提高性能吗?
【发布时间】:2013-01-18 10:49:55
【问题描述】:

PHP 的 APC 扩展包括两个用于启用延迟加载函数和类的配置设置; apc.lazy_functionsapc.lazy_classes

我的网站使用具有显着性能优势的 APC。他们还在不同时间启用和禁用了延迟加载设置,没有明显的区别。

在互联网上,除了讨论之外,没有太多关于这个主题的内容,但没有衡量标准。

是否有人实际测量过使用 APC 延迟加载对性能的影响,或者是否有人注意到使用这些设置的显着差异? 什么时候启用延迟加载是有利的?什么时候应该不惜一切代价避免它?

【问题讨论】:

    标签: php performance lazy-loading apc


    【解决方案1】:

    这完全取决于您使用 APC 的应用程序类型。

    大多数框架都包含自动加载 one wayanother 中的类。这基本上意味着apc.lazy_functionsapc.lazy_classes 的apc 设置在动态包含/需要的类的上下文中是多余的。

    PHP 的编码标准发生了变化,尤其是在接受PSR-1 Coding Standard 之后,框架不仅实现了自动加载,还确保每个文件只定义一个类。

    这反过来意味着apc.lazy_classes 仅在使用时从包含的文件中复制类,但当前的编码标准确保根据需要包含文件,并且包含的​​文件只定义一个类,即立即使用。

    apc.lazy_functionsapc.lazy_classes 与其他(较旧的)项目一起使用,可能会产生更好的结果。


    但是,对于apc.lazy_functions,该设置仅涵盖文件中定义的全局范围函数。不是类的个别方法。 The nomenclature 可能会产生误导,但类函数被明确称为 methods

    【讨论】:

    • 类自动加载只会否定apc.lazy_classes 的好处,但是apc.lazy_functions——据我所知——应该将这些类分解到方法级别,这是我想要的预计最大的性能差异。
    • 哦,不。 apc.lazy_functions 指的是实际的全局范围函数,而不是类的 methods
    • 嗯,那很清楚了;除非您有很多功能,否则自动加载类时没有好处(至少在理论上)。这应该排除我所知道的几乎所有主要框架/cms/库的好处。
    • @Martijn 老实说,我知道的几乎所有框架。也许是 2000 年初的一些非常旧的版本,当时编码标准是零星的,尽管需要,但整个库都被加载了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多