gpt4 book ai didi

php - 在 PHP (>= 5.0) 中,通过引用传递更快吗?

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:30 25 4
gpt4 key购买 nike

在 PHP 中,函数参数可以通过在函数声明中的参数前加上一个 & 符号来通过引用传递,如下所示:

function foo(&$bar)
{
// ...
}

现在,我知道这不是为了提高性能而设计的不是,而是为了允许函数更改通常超出其范围的变量。

相反,PHP 似乎使用写入时复制来避免复制对象(也可能是数组),直到它们被更改。因此,对于不更改其参数的函数,效果应该与通过引用传递它们的效果相同。

但是,我想知道写时复制逻辑是否可能在按引用传递时短路,这是否会对性能产生影响。

预计到达时间:可以肯定的是,我认为它不会更快,而且我很清楚这不是引用的目的。所以我认为我自己的猜测非常好,我只是在寻找真正了解幕后情况的人的答案。在五年的 PHP 开发中,我总是发现很难通过阅读源代码来获得有关 PHP 内部结构的高质量信息。

最佳答案

用20kB的字符串调用一个函数100000次迭代测试,结果为:

只是读取/使用参数的函数

pass by value:      0.12065005 seconds
pass by reference: 1.52171397 seconds

写入/更改参数的函数

pass by value:      1.52223396 seconds
pass by reference: 1.52388787 seconds

结论

  1. 按值传递参数总是更快

  2. 如果函数改变传递的变量的值,对于实际目的来说与按引用传递和按值传递是一样的

关于php - 在 PHP (>= 5.0) 中,通过引用传递更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56584371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com