【问题标题】:PHP array vs PHP Constant?PHP数组与PHP常量?
【发布时间】:2010-01-17 05:50:33
【问题描述】:

我很好奇,是否有任何性能提升,例如在 PHP 中使用更少的内存或资源:

50 个不同的设置变量像这样保存到数组中

$config['facebook_api_secret'] = 'value here';

或 50 个不同的设置变量像这样保存到一个常量中

define('facebook_api_secret', 'value here');

【问题讨论】:

    标签: php arrays constants


    【解决方案1】:

    我认为这是一种微优化。也就是说,差异足够小,以至于为了性能而使用一种解决方案而不是另一种解决方案是不值得的。如果性能对您的应用程序如此重要,那么您就不会使用 PHP! :-)

    使用任何更方便或更有意义的东西。我将配置数据放入常量中只是因为在加载配置文件后不允许更改它们,这就是常量的用途。

    【讨论】:

    • 我明白我只是想看看 1 是否比另一个更好,因为他们可以完成同样的事情。
    • 另一种可能被认为更好的常量是智能编辑器或 IDE 应该能够为它们完成代码。但是代码完成不适用于配置数组的字符串键。
    【解决方案2】:

    在我的非正式测试中,我实际上发现访问/定义常量比普通变量/数组要慢一些。

    反正不会有什么不同;无论你对这些做什么,很可能会在千分之一秒内发生。

    从长远来看,优化您的数据库(索引,使用 EXPLAIN 来检查您的查询)和服务器设置(使用 APC)会产生更大的影响。

    【讨论】:

      【解决方案3】:

      使用不同的编码技术/聪明的编程技巧提高 50 个变量的性能是在 PHP 中做事的错误方法。永远记住:优化器比你聪明

      【讨论】:

        【解决方案4】:

        您不会获得任何形式的性能提升。真正的问题是哪个更有用。

        对于定义一次的标量值(字符串、整数等),不应更改,并且需要在任何地方都可以访问,您应该使用常量。

        如果你有某种复杂的嵌套配置,例如:

        $config->facebook->apikey = 'secret_key';
        $config->facebook->url = 'http://www.facebook.com';
        

        您可能想要使用由众多框架之一提供的数组或配置 api(Zend_Config 还不错)

        【讨论】:

        • 常量比配置类快得多。没有构造,也没有 ->getters() 与常量与类。不过它们看起来并不漂亮:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-03
        • 1970-01-01
        • 2012-04-07
        • 2010-11-20
        • 1970-01-01
        • 2010-12-13
        相关资源
        最近更新 更多