首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环代码优化

循环代码优化
EN

Stack Overflow用户
提问于 2010-07-06 18:10:10
回答 3查看 1.2K关注 0票数 3

如何优化下面的代码,

我需要像这样运行3组循环:

代码语言:javascript
复制
for($i=1;$i<=$count-1;$i++){    
  for($j=$i+1;$j<=$count;$j++){
  // do some query use $i and $j

  }
}
for($i=1;$i<=$count-2;$i++){
   for($j=$i+1;$j<=$count-1;$j++){   
     for($k=$j+1;$k<=$count;$k++){
       // do some query use $i and $j and $k
     }
  }
}
for($i=1;$i<=$count-3;$i++){
   for($j=$i+1;$j<=$count-2;$j++){   
      for($k=$j+1;$k<=$count-1;$k++){
     for($l=$k+1;$l<=$count;$l++){ 
       // do some query use $i and $j and $k and $l
       }
     }
  }
}

有没有一种方法可以简化代码,也许是将循环连接在一起?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-06 20:08:39

微优化:使用

代码语言:javascript
复制
++$i

而不是

代码语言:javascript
复制
$i++

与$j++、$k++和$l++等效

但是您在这些循环中做了什么:您完全有可能执行一些查询(数据库?)可以更改为完全移除循环。这比任何微观优化都要有效得多

票数 0
EN

Stack Overflow用户

发布于 2010-08-16 15:27:00

这应该可以做到这一点(未测试):

代码语言:javascript
复制
for($i = 1; $i <= $count - 3; $i++) {
    for($j = $i + 1; $j <= $count; $j++) {
        // i,j query

        if($j > $count - 2) {
            continue;
        }

        for($k = $j + 1; $k <= $count; $k++) {
            // i,j,k query

            if($k > $count - 1) {
                continue;
            }

            for($l = $k + 1; $l <= $count; $l++) {
                // i,j,k,l query
            }
        }
    }
}

请注意,查询不再按其原始顺序排列。

正如已经说过的,如果不知道您正在运行的查询,就没有办法进一步优化它。

票数 2
EN

Stack Overflow用户

发布于 2010-07-06 18:12:14

最大的问题是内部循环会多次运行。您可以通过检查循环中的i === 1j === 2并仅在为真时运行适当的代码来解决此问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3185288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档