1

我正在为我的研究编写一个应用程序,该应用程序处理非常大的数组和对其值的大量迭代。为了减少计算时间,我正在对代码进行一些改进。现在,经过几次改进,计算时间还是有点高。该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()功能。

顺便说一句,我在双核(英特尔)E8500 @3.16GHz、3.17GHz 和 8Gb RAM 上运行脚本,操作系统是 Windows 7 64 位(以防万一)。

提前致谢。

4

1 回答 1

0

来自评论的信用归功于@Wikken:

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

它真的很有帮助并且可以快速完成工作。在我的情况下,将时间减少了 %20。谢谢威肯!

于 2013-05-23T22:45:34.367 回答