通过参考传递参数的速度和;效率目的

时间:2012-08-27 18:10:38

标签: php performance pass-by-reference pass-by-value

当向函数传递参数时,如果函数不应该更改该参数的值,则约定是通过值传递。我们只在函数修改该变量时传递& byref。

另一方面,我们知道在通过引用传递时,PHP使用指针,而不是复制变量的副本,如传递值的情况。

这在我的脑海中提出了一个问题,我们不应该为了速度和效率目的不时地通过引用将某些变量传递给我们的函数 - 即使我们不需要修改它们。

我没有对这个想法感到疯狂并且完全滥用它,我想在这里提出一个参考框架,说明我在谈论哪些变量或变量。

它们主要是$ dbh(数据库句柄)和非常大的变量。告诉你实话,只是$ dbh!真。

在您看来,您认为这是一种很好的做法,还是您认为这是一种绝不应该实践的做法。

让我们把这件事情带到一个代码片段并对其进行评论。

//假设$ dbh是mysql连接的database_handle

for ($userID = 1; $userID <= 1000; $userID++) {

        display_name ($dbh,"users",$userID)// outputs the name of the passed userid 
}

这里,display_name函数应该使用$ dbh by ref还是按值?

2 个答案:

答案 0 :(得分:5)

PHP使用copy-on-write,这实际上意味着只要变量未被修改,按值传递它与通过引用传递它具有相同的效果。也就是说,通过在您描述的场景中使用引用不会有性能提升(事实上,some report引用可能会更慢)

答案 1 :(得分:1)

  

它们主要是$ dbh(数据库句柄)和非常大的变量。至   说实话,只需$ dbh!真。

是什么让你觉得它很大? “句柄”通常表示类似指针(或指针指针),非常小的东西。