最优化的方法来创建关联数组

时间:2017-10-15 17:36:28

标签: php arrays optimization micro-optimization

创建关联数组的最佳(最快,最可读等)方法是什么?

上次我看到我的同事时,通过以下方式创建小型关联数组:

$array['is_enabled'] = false;

在代码审查中,我认为更可读的形式是:

$array = [
    'is_enabled' => false
];

但是"可读"是主观的东西,所以它不是最好的论据。

1 个答案:

答案 0 :(得分:1)

第一种方法3v4l link

$subscription['is_enabled'] = false;

您可以在链接中看到生成的3个操作

number of ops:  3
compiled vars:  !0 = $subscription
line     #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   3     0  E >   ASSIGN_DIM                                               !0, 'is_active'
         1        OP_DATA                                                  
         2      > RETURN                                                   1

平均。内存使用量 25.15 MiB 并在 0.013s (用户时间PHP 7.1.x)中运行。

第二种方法3v4l link

$subscription = ['is_active' => false];

现在它只有2个操作。分配并返回。

number of ops:  2
compiled vars:  !0 = $subscription
line     #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   3     0  E >   ASSIGN                                                   !0, 
         1      > RETURN                                                   1

平均。内存使用量 24.40 MiB 并以 0.010s (用户时间PHP 7.1.x)运行。

我不确定第二种方法中缺少哪种操作op_data。但仍然只有一次操作,结果我们的内存使用量减少了近0.8MiB,执行时间缩短了约23%。

所以它看起来像$array= ['key' => false];

它不仅更易读,而且解析器也更简单。 使用这种表示法,我们可以跳过三个操作,这样可以为我们提供额外的空闲记忆和时间。