嵌套如果条件和逻辑AND操作

时间:2015-08-05 06:39:58

标签: if-statement logical-operators cpu-cycles

void somefunction(struct *str, const char *status)
{
 if (str != NULL)
   {
      if (status != NULL)
      {
         str_copy(str->something, status, sizeof(str->something));
      }
   }
}

//哪个CPU循环高于1或者低于1? 哪个需要更多CPU周期?

void somefunction(struct *str, const char *status)
{
 if (str != NULL && status != NULL)
   {
         str_copy(str->something, status, sizeof(str->something));

   }
}

哪个CPU周期更长?

1 个答案:

答案 0 :(得分:1)

如果您的语言支持短路评估,第二段代码会更好。在短路评估的情况下,如果第一个表达式str != NULL的计算结果为false,则不会评估语句@Override @Cacheable(value = IC_CACHE, key = "#id") public IssueCategory getIssueCategoriesById(Integer id) { return issueCategoriesRepo.findById(id); } 中的第二个表达式。优点在于,与第二段代码对应的汇编代码不包含第一段代码的汇编代码中存在的跳转语句。

因此,除非编译器自行执行某种优化,否则这将为您提供稍快的汇编代码。分析这些代码以查看您的编译器是否正在执行此操作。