1
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 周期?

4

1 回答 1

1

如果您的语言支持短路评估,第二段代码会更好。在短路计算的情况下,如果第一个表达式的计算结果为 false,if (str != NULL && status != NULL)则不会计算语句中的第二个表达式。str != NULL优势在于,对应于第二段代码的汇编代码将不包含第一段代码的汇编代码中存在的跳转语句。

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

于 2015-08-05T06:48:44.033 回答