这一直困扰着我,让我说我有一个功能:
public function addItem($item) {
$this->items[] = $item;
return $this;
}
然后我有另一个功能,如:
public function addItems($items) {
foreach($items as $item) {
$this->addItem($item); //IS THIS FASTER OR
$this->items[] = $item;//THIS?
}
return $this;
}
基本上我总是在循环中做选项1 $this->addItem($item)
,但另一方面,在我看来多余的我可以将项目附加到数组,基本上它做同样的事情。如果性能有任何差异,只想知道哪一个更快。
答案 0 :(得分:4)
此
$this->items[] = $item;
总是(微小)快于
$this->addItem($item);
因为第二个版本会产生调用函数的开销,而第一个版本则不会。对于一个元素,您应该使用第一个版本而不是array_push()
的原因相同。引用手册:
注意:如果使用array_push()将一个元素添加到数组中 最好使用$ array [] =因为这样就没有开销了 调用函数。
答案 1 :(得分:3)
函数调用需要一些处理器时间。因此,较少的函数调用 - >更多表现。
<强>无论其强>
重点是您的代码仍然清晰且安全。这样的代码比任何表现都重要得多。
记住一次又一次:
清除代码,清除变量和函数名称 您的代码将为您节省大量的时间和健康。
您的案例:addItem()
函数提供了一个非常良好的抽象。保持它。
在函数addItem()
中,您可以进行一些验证和调试。此外,它可以返回true
或false
表示成功。
答案 2 :(得分:2)
功能跳转原则上比直接访问慢(即1更快)。 话虽如此:
答案 3 :(得分:0)
我对基准测试最重要的是
在您自己证明之前,永远不要相信任何人告诉您更快或更慢的事情
我已经写过几十个基准,多次证明公众舆论错误。