【发布时间】:2023-03-22 03:30:01
【问题描述】:
在 PHP 中,我经常做大量的字符串操作。是否可以将我的代码拆分为多个函数,因为如果像字符串这样的原始类型按值传递,我会显着影响性能。
【问题讨论】:
标签: php performance byref
在 PHP 中,我经常做大量的字符串操作。是否可以将我的代码拆分为多个函数,因为如果像字符串这样的原始类型按值传递,我会显着影响性能。
【问题讨论】:
标签: php performance byref
只有对象通过引用传递。
这并不意味着您可以通过更改引用来提高性能 - PHP 使用写时复制,因此只有在您修改变量时才会进行复制。
从这个角度来看,将代码拆分为函数不会减慢速度。 调用函数的开销很小,但除非您在循环中调用 10,000 个函数,否则您可能不需要担心。
【讨论】:
对象通过引用传递。除非您明确使用pass-by-reference with the & operator,否则其他所有内容均按值传递。
话虽如此,PHP 也使用copy-on-write 来避免不必要的复制。
【讨论】:
是的,原语是按值传递的,除非您明确定义要通过引用传递的函数(通过在参数前面使用与符号&)或在参数前面使用与符号调用函数。 (后者已弃用)
请参阅this part of the documentation 了解更多信息。
编辑
此外,PHP 中“对象通过引用传递”的声明有点简化,尽管在大多数情况下通常可以这样认为。这个chapter of the documentation 解释了这些差异。
【讨论】:
在 PHP 中按引用传递实际上比按值传递要慢。我找不到此声明的正确引用;它位于 PHP 手册的“参考”部分。
【讨论】:
默认情况下,一切都是按值传递的。如果您想通过引用传递某些内容,则必须明确说明。
【讨论】: