【发布时间】:2011-08-01 18:20:12
【问题描述】:
嗨 我要比较大量的值,我使用了数组,但是内存不足。数组中的值大约为 5000000,并且对于每个值,将再次执行 5000000 的循环。简而言之,将执行 5000000 x 5000000 个周期。
我正在做的只是运行两个循环。请让我知道一些有效的方法来执行此操作,因为该程序由于内存而停止。
for($k=0;$k<sizeof($pid);$k++) // size of $pid = 5000000
{
$out =0;
for ($m=0;$m<sizeof($outid);$m++) // size of $out 5000000
{
if ($pid[$k] == $out[$m])
{
$out ++;
}
}
}
【问题讨论】:
-
如果你需要执行250000亿次迭代,你不要使用PHP!
-
您到底想达到什么目的?我想如果你多解释一下这个问题,你可能会得到一些更有帮助的答案……
-
或者,您可以更改算法,使其不是 O(N^2) 时间复杂度。如果您所做的只是查找每个数组中公共元素的数量,那么有些算法的运行时间为 O(N log N)。
-
我同意@Oli。你想达到什么目的?这可以用其他编程语言更有效地完成,因为 PHP 不是为此而设计的......
-
没关系,在 32 位 PHP 安装上,它会在 $out 到达外部循环结束之前很久就溢出 int 限制。
标签: php arrays comparison large-data