[英]How can I make these loops faster?
我正在为正在研究的项目使用PHP4。 我不得不扩展此代码(它对手头的数据足够快地工作):
for ($i = 1; $i <= count($arr); $i++) {
$a = $arr[$i]['date'];
for ($y = 1; $y <= 10000000; $y++) {
$c = $arr[$i]['data'][$y];
// here I inserted another loop
}
}
我在其中插入了另一个循环,如下所示:
for ($k = $i + 1; $k <= count($arr); $k++) {
$next_is_empty = false;
$next_is_null = false;
if ($arr[$k]['data'][$y] == '') {
$next_is_empty = true;
break;
} elsif (is_null($arr[$k]['data'][$y])) {
$next_is_null = true;
break;
}
}
因为我是用内存编写的,所以代码更像是一个通用概念,而不是特定的工作代码。 但是,我认为我的问题足够准确。 因此,我插入的这个循环在大多数情况下都可以正常工作,但在某些情况下太慢了-我该如何加快速度? 我也基于此示例对性能的一般规则感到好奇。 我知道最好避免嵌套循环,但是例如为什么为什么如果我将变量$next_is_empty/null
放在循环前面,代码就可以足够快地工作(那么解决方案是错误的,但是足够快)? 我知道需要进行更多的重新分配,但是他们为什么要花这么多时间?
不要在循环中使用count(),在不同的行中使用count(),然后在循环中使用变量
$count = count($arr);
for ($i = 1; $i <= $count; $i++) {
$a = $arr[i]['date'];
for ($y = 1; $y <= 10000000; $y++) {
$c = $arr[i]['data'][y];
// here I inserted another loop
}
}
这样有更好的基准测试结果
就在循环外定义变量$ next_is_empty而言,据我所知,这很难回答,这取决于您使用的PHP版本,但最好放在外面,那就是原始的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.