【发布时间】:2010-09-15 18:04:41
【问题描述】:
在 PHP 中,函数参数可以通过在函数声明中的参数前面加上一个 & 号来通过引用传递,如下所示:
function foo(&$bar)
{
// ...
}
现在,我知道这并非旨在提高性能,而是允许函数更改通常超出其范围的变量。
相反,PHP 似乎使用 Copy On Write 来避免复制对象(可能还有数组),直到它们被更改。因此,对于不改变其参数的函数,其效果应该与您通过引用传递它们的效果相同。
但是,我想知道 Copy On Write 逻辑是否可能在 pass-by-reference 时发生短路,以及这是否会对性能产生任何影响。
ETA:可以肯定的是,我认为它不会更快,而且我很清楚这不是引用的用途。所以我认为我自己的猜测非常好,我只是在寻找一个真正知道幕后肯定发生了什么的人的答案。在 PHP 开发的五年中,我总是发现很难通过阅读源代码来获得有关 PHP 内部结构的优质信息。
【问题讨论】:
-
查看我的问题以获取引用可以显着减慢速度的示例:stackoverflow.com/questions/3117604/…
标签: php performance pass-by-reference