【问题标题】:Returning value versus passing object references返回值与传递对象引用
【发布时间】:2011-08-15 21:04:48
【问题描述】:

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

如果这会产生重大影响,我计划将我的函数样式更改为返回有关函数执行(时间基准、尝试等)的一系列信息,并直接处理对象引用。

那你怎么看?

【问题讨论】:

    标签: php function object reference return


    【解决方案1】:

    不,没有任何区别。

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

    PHP 在指针、引用和变量处理方面做了很多优化。不要以为你可以轻易地超越它,PHP 太高级了。写下你的意思。和往常一样:profile 找出真正的瓶颈。

    【讨论】:

    • +.5 用于解释写入时复制,+.5 用于分析建议 :)
    猜你喜欢
    • 2021-04-01
    • 1970-01-01
    • 2013-06-27
    • 2011-12-02
    • 1970-01-01
    • 2015-12-18
    • 2013-11-24
    • 1970-01-01
    • 2019-06-11
    相关资源
    最近更新 更多