array_key()是最快的解决方案吗?

时间:2013-05-14 21:41:56

标签: php performance array-key

我正在为我的研究编写一个应用程序,它处理非常大的数组和大量的迭代值。为了减少计算时间,我在代码中实现了几项改进。目前,经过多次改进后,计算时间仍然有点高。 array_key()函数是消耗几乎一半计算时间的函数。有更好的替代品吗?

我正在创建一个示例,它是我需要改进的简单版本(没有迭代循环):

$bigArray=array_fill(0,1000000,0);
for($i=0;$i<10;$i++){
    $rnd=mt_rand(0,1000000);
    $bigArray[$rnd]=1;
}

$start=microtime(true);
$list=array_keys($bigArray,1);
$end=microtime(true);

echo $end-$start;

结果类似0.021490097045898秒。有人知道更快的方法吗?即使非常小的改进也会有所帮助,因为这种计算可以进行数十万轮,有时时间可达30秒,其中一半用于array_key()功能,如上所述。

BTW,我在双核(Intel)E8500 @ 3.16GHz,3.17GHz和8Gb RAM上运行脚本,操作系统是Windows 7 64位(以防万一)。

提前致谢。

1 个答案:

答案 0 :(得分:0)

从评论中获得@Wikken的信用:

  

如果它真的只有1和0,则array_filter()的执行速度大约是此处array_keys()的两倍。

这真的很有帮助,可以快速完成工作。在我的情况下减少了%20的时间。感谢Wikken!