数组初始化性能差异



这两个两个之间有任何性能差异吗?

$rules['a']['x'] = 'someValue';
$rules['a']['y'] = 'anotherValue';

$rules['a'] = [
    'x' => 'someValue',
    'y' => 'anotherValue',
];

正如其他所有人所指出的那样,任何区别都可以忽略,您不应该关心这一点。

话虽如此,第二种方法在技术上应该更具性能,因为(至少看起来(它在单个指令中完成了整个事情。

当您这样做时:

$rules['a']['x'] = 'someValue';
$rules['a']['y'] = 'anotherValue';

... PHP引擎必须首先检查$rules是否存在,是否是数组,ArrayAccess对象是否存在(在这种情况下以及错误(。之后,它必须对$rules['a']进行相同的操作。
而且必须这样做两次,因为这两条线代表单独的表达式。

另一方面:

$rules['a'] = [
    'x' => 'someValue',
    'y' => 'anotherValue',
];

...只会检查$rules是什么(不关心$rules['a']是否存在或它是哪种类型(,并且它只需要一次。


请注意,这是一个非常,非常简化的解释,并且还有许多其他因素会发挥作用并有所作为。但这就是使用PHP这样的高级语言的好处 - 通常,您不必在乎甚至知道现场的工作方式。

如果您想进行性能优化,这肯定是错误的事情。查找您的"瓶颈"在哪里并在它们上工作(专业提示:10中的9次,这是您的数据库查询(。

最新更新