哪种分配方法更快?

时间:2010-06-18 08:53:51

标签: php optimization

什么会更快?它对生产力的影响有多大?

$test = new Test();
$a1 = array();
$a2 = array();
$a3 = array();

$a1[1] = $test;
$a2['qwe'] = $test;
$a3[] = $test;

1 个答案:

答案 0 :(得分:4)

没有人回答,我做了一些测试

代码:

<?php

class O
{
}

$test = new O;
$a1 = array();
$a2 = array();
$a3 = array();

$start = microtime(true);
for ($k = 0; $k < 1000000; $k++)
    $a1[1] = $test;
$time[1] = microtime(true)-$start;

$start = microtime(true);
for ($k = 0; $k < 1000000; $k++)
    $a2['qwe'] = $test;
$time[2] = microtime(true)-$start;

$start = microtime(true);
for ($k = 0; $k < 1000000; $k++)
    $a3[] = $test;
$time[3] = microtime(true)-$start;


print_r($time);

结果:

Array ( [1] => 0.18384599685669 [2] => 0.19556093215942 [3] => 0.3099570274353 )

第三个是最慢的一个,但主要是因为它实际上在每次传递中分配了百万个对象和前两个覆盖对象。当我首先修改为$a1[$k] = $test;时,结果是相似的(尽管不要在低内存限制下运行,比如低于128MB)。

结论:正如我们之前所说,并不重要。专注于编写可读和利用设计模式的代码,而不是一些小的优化。