数组初始化性能差异

时间:2017-04-26 07:37:25

标签: php arrays performance initialization

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

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

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

1 个答案:

答案 0 :(得分:2)

正如其他人所指出的那样,任何差异都是微不足道的,你不应该关心这一点。

尽管如此,第二种方法在技术上应该更高效,因为(至少它看起来像)它在一条指令中完成整个事情。

执行此操作时:

$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次,这是你的数据库查询)。

相关问题