optimization - 继续循环 if 语句内 vs. 在循环内使用 if 语句的否定

标签 optimization loops syntax execution continue

例如,让我们考虑以下 2 个代码:

for (i = 0; i < 1000; i++)
{
   if ( i % 2 != 0)
   {
       continue;
   }
   else
   {
     ...  
   }    
}


for (i = 0; i < 1000; i++)
{
   if (i % 2 == 0)
   {
     ...  
   }    
}

两者都会导致相同的结果。那么使用哪一种呢?哪一个更好?两者之间是否存在显着的性能差异?让我们看看你们对此有何看法。我喜欢我在这里看到的关于这些事情的讨论。这可能会导致更好的代码编写和更好的执行时间。我发布了这个问题,因为我没有找到答案。如果我没有找到答案,我将来可能会发布另一个这样的。

附言当你可以不用它时,在循环中使用 continue 的目的是什么?

最佳答案

在这个特定的例子中?使用 continue 没有任何意义任何。

正如您所提到的,两个代码示例产生完全相同的结果。并且两者都不会比另一个更快。

您选择哪一个的决定应该基于 可读性和清晰度 ,而不是某种误导的“优化”尝试。考虑到这一点,第二个要清楚得多。我会认真质疑在真实代码库中使用第一个的人的编程能力。

作为基本准则,切勿使用 if-else当单if会做。在这种情况下,您正在比较 !=然后用 else 找到相反的结果声明——这几乎就像在说 !(!=) ,产生双重否定。很难阅读或理解。通常,您应该尝试评估 if 中的积极条件。声明,而不是负面声明,以防止这种情况发生。

而且真的没有理由发布与此类似的其他问题。所有的答案都会是一样的。忽略任何可能的性能差异(如果存在的话,考虑到优化编译器,这是不太可能的),并专注于作为必须阅读它的人,哪个版本对您最有意义。请忽略任何给你相反建议的人。

关于optimization - 继续循环 if 语句内 vs. 在循环内使用 if 语句的否定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6002374/

相关文章:

C 谁能解释一下这个语法?

c# - 限制进程的CPU使用率

c++ - 当当前不需要原子性时,使用构造函数代替 atomic.store()

python - 将此程序中所有可能路径返回到嵌套列表的算法

linux - 如何一次获得您对配置文件所做的所有更改(自系统安装以来)?

python - 太早提供输入会导致故障吗?

c++ - 为什么必须在 C 中向后读取指针声明?

javascript - 加速改变 div 元素颜色的 JavaScript 函数构造 'led display'

mysql - 500000 个用户的数据库速度相当慢

PHPdesigner 8 语法高亮