性能函数调用vs乘以1

时间:2017-08-08 15:56:42

标签: c++ performance real-time

看看这个功能:

float process(float in) {
  float out = in;

  for (int i = 0; i < 31; ++i) {
    if (biquads_[i]) {
      out = biquads_[i]->filter(out);
    }
  }

  return out;
}

biquads_std::optional<Biquad>[31]

在这种情况下我检查每个可选项以检查它是否为空,然后调用biquad的过滤器函数,如果相反我无条件地调用过滤器函数,将其更改为乘以1或者只是返回输入值,将是效率更高?

1 个答案:

答案 0 :(得分:2)

很可能它不会产生差异(虽然你的问题并不完全清楚,但有点猜测)。有两个原因:1)除非代码将在 very 热路径中使用,否则即使一种方式比另一种方式快几纳秒也无关紧要。 2)很可能你的编译器优化器将足够聪明,以生成在两种情况下都执行接近(如果不相同)的代码。你测试过吗?你有基准/描述它吗?如果不;这样做 - 启用优化。

努力编写清晰,可读,可维护的代码。当您实际遇到问题并且您的探查器将您的功能指向热点时,请担心微优化。