使用数组阵列会影响性能

时间:2012-08-03 21:34:11

标签: php arrays

我试图在允许我的一个函数接受数组数组或只接受标准数组之间做出决定。

带有数组的数组将允许我验证每个数组键,但如果我能够看到使用标准数组的性能提高,则没有必要。

两者之间是否有性能差异(性能明智)?

e.g。

数组数组

$arr2 = array(
   array('isbn' => '1846031249'),
   array('isbn' => '0340912081'),
   array('isbn' => '0435446576'),
   array('isbn' => '1741845467'),
   array('isbn' => '0750924721'),
   array('isbn' => '1843286432'),
   array('isbn' => '011331079X'),
   array('isbn' => '9063325819')
);

普通数组

$arr2 = array(
   '1846031249',
   '0340912081',
   '0435446576',
   '1741845467',
   '0750924721',
   '1843286432',
   '011331079X',
   '9063325819'
);

4 个答案:

答案 0 :(得分:2)

不要做数组数组!你不必要地增加了你需要存储在内存/进程中的信息量。在您的情况下,当每个值只是一个ISBN时,跟踪数组,以便您记住其中的内容并废弃重复标记。

答案 1 :(得分:2)

在您需要之前不要增加复杂性,而不是之前。当事情发生变化时,返回并编辑函数以使用新的输入格式没有任何问题。 (我假设这不是公共API或其他东西。)

另外,数组数组使排序变得非常困难,但更糟糕的是,如果不迭代整个数组,就无法检查是否存在数组值。

常规数组有很多功能可以使它工作。

答案 2 :(得分:2)

将每个ISBN代码存储为只有一个键的关联数组是没用的。考虑一下,哪一个会花更长的时间? :

  1. 我们正在搜索ISBN = xxxxxxxxx。打开$ array [0] - >打开$ innerarray [0] - >找不到 - >关闭$ innerarray - > open $ array [1] - > open $ innerarray [0] - >没找到等......
  2. 我们正在搜索ISBN = xxxxxxxxx。打开$ array [0] - >找不到 - > open $ array [1] - >找不到 - >打开$ array [2]等......
  3. 当您在其中存储10.000个值时,第二种方法会快得多。要打开10.000数组以在$ innerar [0]上搜索值,需要执行的操作多于仅打开一个数组。

答案 3 :(得分:1)

是的,第一个选项需要更长的时间来初始化并占用更多内存。

但除非他/她在循环中处理它们数千次或创建非常大的数组,否则不会发现差异。