我正在为我的研究编写一个应用程序,它处理非常大的数组和大量的迭代值。为了减少计算时间,我在代码中实现了几项改进。目前,经过多次改进后,计算时间仍然有点高。 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位(以防万一)。
提前致谢。
答案 0 :(得分:0)
从评论中获得@Wikken的信用:
如果它真的只有1和0,则array_filter()的执行速度大约是此处array_keys()的两倍。
这真的很有帮助,可以快速完成工作。在我的情况下减少了%20的时间。感谢Wikken!