【发布时间】:2013-02-28 00:08:29
【问题描述】:
1我知道从一开始这听起来很傻......
让我马上告诉你,这与The advantage / disadvantage between global variables and function parameters in PHP. asked right here on stackoverflow 不是同一个问题。在那里,提问者想知道本地变量与全局变量。在这里,全局变量与全局变量。我的问题是关于 PHP 处理全局变量访问和速度的内部方式。
这是一个问题,在下面的示例中,function_1 是否应该比 function_2 运行得更快?
function function_1 ( &$global_variable_x) {
//do something with $global_variable_x
}
function function_2 () {
global $global_variable_x;
//do something with $global_variable_x
}
让我强调一下有什么区别......
在情况 1 中,您在函数参数中传递全局变量,不仅如此,您还通过 ref 传递它,因此内存位置直接传递给 PHP。由于这个技巧,没有必要在函数中使用global 关键字,并且正因为如此,PHP 没有花费时间在全局名称空间中查找全局。那么问题是为什么不这样做呢?它必须更快,不是吗?
当然,这个问题很容易被误解,进入日常的讨论琐事
- 全局变量不好
- 全局变量不需要通过函数 args 传递,因为全局变量……是全局变量,因此无论如何都可以在任何地方访问它们。 最后,从语义的角度来看,通过函数参数传递一个全局变量是没有意义的,它把人们搞糊涂了。
这些都没有解决所提出的问题。
一切都与速度有关。
【问题讨论】:
-
我相信这个问题已经回答了...stackoverflow.com/questions/2216340/…?
-
只有在实际需要参考时才应使用参考 (
&)。 永远不要使用它们来加速你的代码。用于加速代码的引用的情况已得到修复,现在 PHP 会自动处理它。 -
@niacurshi 不完全是。他们讨论的鼻涕完全一样。本地变量与全局变量实现的问题。在我问我的问题之前,我已经看过那个帖子。谢谢你的参考。
-
@SverriM.Olsen 感谢您对奥尔森的评论。但是,这种改进与
copy on write的问题有关,因为这篇文章 (thedeveloperday.com/php-lazy-copy) 很好地涵盖了它。我的问题探讨了不同的观点。 -
@AverageJoe 啊,好的。但无论如何,真的值得花时间在这上面吗?速度差异是如此之小,以至于可能甚至无法测量。