【发布时间】:2010-01-17 05:50:33
【问题描述】:
我很好奇,是否有任何性能提升,例如在 PHP 中使用更少的内存或资源:
50 个不同的设置变量像这样保存到数组中
$config['facebook_api_secret'] = 'value here';
或 50 个不同的设置变量像这样保存到一个常量中
define('facebook_api_secret', 'value here');
【问题讨论】:
我很好奇,是否有任何性能提升,例如在 PHP 中使用更少的内存或资源:
50 个不同的设置变量像这样保存到数组中
$config['facebook_api_secret'] = 'value here';
或 50 个不同的设置变量像这样保存到一个常量中
define('facebook_api_secret', 'value here');
【问题讨论】:
我认为这是一种微优化。也就是说,差异足够小,以至于为了性能而使用一种解决方案而不是另一种解决方案是不值得的。如果性能对您的应用程序如此重要,那么您就不会使用 PHP! :-)
使用任何更方便或更有意义的东西。我将配置数据放入常量中只是因为在加载配置文件后不允许更改它们,这就是常量的用途。
【讨论】:
在我的非正式测试中,我实际上发现访问/定义常量比普通变量/数组要慢一些。
反正不会有什么不同;无论你对这些做什么,很可能会在千分之一秒内发生。
从长远来看,优化您的数据库(索引,使用 EXPLAIN 来检查您的查询)和服务器设置(使用 APC)会产生更大的影响。
【讨论】:
使用不同的编码技术/聪明的编程技巧提高 50 个变量的性能是在 PHP 中做事的错误方法。永远记住:优化器比你聪明。
【讨论】:
您不会获得任何形式的性能提升。真正的问题是哪个更有用。
对于定义一次的标量值(字符串、整数等),不应更改,并且需要在任何地方都可以访问,您应该使用常量。
如果你有某种复杂的嵌套配置,例如:
$config->facebook->apikey = 'secret_key';
$config->facebook->url = 'http://www.facebook.com';
您可能想要使用由众多框架之一提供的数组或配置 api(Zend_Config 还不错)
【讨论】: