不必要的其他陈述:当只使用IF时,使用ELSE IF是否有任何不利之处?

时间:2017-03-30 15:29:21

标签: c++ c optimization

考虑以下示例的速度(请忽略这个例子非常荒谬):

int multiply(int a, int b) {
  if (a == 0 || b == 0) {
    return 0;
  }
  if (a == b) {
    return pow(a, 2);
  }
  return a*b;
}

int multiply(int a, int b) {
  if (a == 0 || b == 0) {
    return 0;
  } else if (a == b) {
    return pow(a, 2);
  } else {
    return a*b;
  }
}

显然,这里并不是真的有必要,但是当我处理复杂的操作时,我发现在格式化后者时更容易阅读。是否需要更长时间才能在第二个配置中运行?我会牺牲什么吗?

2 个答案:

答案 0 :(得分:6)

编辑:首先回答OP问题,然后讨论一般情况。

Sepcific-to-your-problem答案:在你的情况下,由于你有回报,在每种条件下,它都会突破流量控制。在一般情况下,在必要时将它们链接起来会更好。

一般答案:是的,基本上当你只使用if时,你的程序正在检查所有条件,即使其中一个条件得到满足。

当执行if,else-if,else的链时,一旦满足其中一个条件,该链中的所有其他条件将被忽略。

答案 1 :(得分:2)

在这种特殊情况下,我所知道的编译器都不会失败 为两者生成完全相同的输出。但是,在一般情况下 情况下:

  1. 为可读性和可维护性而编写
  2. 个人资料个人资料
  3. 仅在您遇到瓶颈的地方进行优化
  4. 使用更多分析
  5. 测试您的优化 第四部分很重要,硬件有很多令人惊讶的 内置优化,它根本不直观 要快点