内部评估的布尔条件以获得循环性能

Boolean condition evaluated inside for loop performance

本文关键字:循环 循环性 性能 评估 布尔 条件 内部      更新时间:2023-10-16

我有两个循环。我不明白为什么第一个比第二个跑得更快。你能解释得尽可能简单吗?

第一:

for (int x1=0;x1<1000;x1++){
   for(int x2=0;x2<1000;x2++){
      if(x1<500){
         a[x2+x1*1000]=100;
      }
   }
}

第二:

bool cond;
for (int x1=0; x1<1000; x1++) {
    cond = x1<500;
    for(int x2=0; x2<1000; x2++){
        if(cond){
            a[x2+x1*1000] = 100;
        }
    }
}

(我简化了我的代码)

最简单的答案是当你使用

if(x1<500){
      a[x2+x1*1000]=100;
          }

您实际上正在使用一种直接方法,其中比较值并完成工作,但是当您使用

if(cond) { 
  a[x2+x1*1000] = 100;
         }

然后它首先计算 "cond" 的答案,然后应用 if 条件,更具体地说,你可以把它当作 cond 是一个函数调用,if(x1<500) 是 main() 中的简单比较。希望你得到了答案,如果你想知道关于这个话题的任何其他信息,告诉我:)