返回值与传递对象引用


Returning value versus passing object references

在某些时候,有人向我建议,我的PHP脚本的缓慢部分可能是因为我从函数返回一个大数组。相反,他建议将对象引用传递给函数,并让函数直接处理数组。

如果这有很大的不同,我打算改变我的函数风格,返回一个关于函数执行的信息数组(时间基准,尝试等),而不是直接处理对象引用。

你觉得怎么样?

不,这没有什么区别。

PHP实现了写时复制,这意味着即使您将值赋给另一个变量或从函数返回该值,该值也只是在内部通过引用传递。只有在写入时才会复制它,而且只有在没有其他变量引用它的情况下才会复制。由于您是从函数返回数组,因此其他变量不应该引用该数组,因此在任何时候都不会进行复制。

PHP在指针、引用和变量处理方面做了很多优化。不要认为您可以轻易地胜过它,PHP对于这一点来说太高级了。写下你的意思。和往常一样:profile查找真正的瓶颈