【问题标题】:PHP method return this, effect on performance? [closed]PHP方法返回这个,对性能有影响吗? [关闭]
【发布时间】:2013-03-04 02:25:19
【问题描述】:

通过确保我的所有设置器返回$this,它如何影响性能?允许类似于 jQuery 编码标准的链式调用。

例如:

public function setEnabled(){
    $_enabled = true;
    return $this;
}

我发现这个其他 question 没有提到性能方面,surley 有一个负面的

【问题讨论】:

  • 您愿意为每个 setMethod 重新引用该对象吗?这备用代码,谁在乎它的影响,它必须比阻塞调用脚本更好。
  • 过早优化是万恶之源
  • 我对它进行了一些基准测试,在我的 i7-6700 上,在 PHP 7.1.16 的笔记本电脑的电池节能模式下,返回 $this 而不是返回 void 似乎慢了大约 17 纳秒,基准代码可以在这里找到:github.com/Znote/POTCP/commit/…(我会将此作为答案发布,但它已关闭..)

标签: php


【解决方案1】:

没有显着的性能影响。不会克隆对象。

【讨论】:

  • 值得注意的是,由于其他原因,它被认为是一种不好的做法。 (链接方法会导致可读性差)。
  • 不同意。我很感激。
【解决方案2】:

对象是通过引用传递的,除非您专门克隆它们(无论如何在 php 5 中)。我认为这样做不会对性能产生任何影响。

【讨论】:

    【解决方案3】:

    没有另一个问题回答所有问题,在您的代码示例中,您的函数将始终为真,如果您愿意,可以是链式

    【讨论】:

      【解决方案4】:

      PHP return null;return; 相同,这与根本不返回任何内容相同。无论哪种方式,都会返回一些东西,它也可能是对自身的对象引用。

      【讨论】:

      【解决方案5】:

      大多数代码的每一行都会带来性能损失。但这不是写那行代码的重点吗

      您的问题非常模糊,取决于几个因素。返回的大小对象、接收方式以及在返回之前对$this 进行的计算。

      通常返回 $this 没有问题,但这完全是判断的问题。如果 $this 包含一个巨大的数据数组,您可以认为它会比您的示例使用更多的内存和处理时间。

      【讨论】:

      • 这只是一个参考,而不是对象本身。在使用之前,大小无关紧要。这无关紧要。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 2016-03-22
      • 2011-11-12
      • 2014-01-05
      • 2014-03-12
      • 1970-01-01
      相关资源
      最近更新 更多