什么能更快地工作?它对生产力的影响会有多大?
$test = new Test();
$a1 = array();
$a2 = array();
$a3 = array();
$a1[1] = $test;
$a2['qwe'] = $test;
$a3[] = $test;发布于 2010-06-18 17:12:47
由于没有人回答,我做了一些测试
代码:
<?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以下)。
结论是:正如我们之前所说的,it 与并不重要。专注于编写可读并利用设计模式的代码,而不是一些次要的优化。
https://stackoverflow.com/questions/3068297
复制相似问题