繁体   English   中英

性能函数调用与1相乘

[英]Performance function call vs multiplication by 1

看一下这个功能:

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的filter函数,如果相反,我无条件调用filter函数,将其更改为乘以1或简单地返回输入值,会更有效吗?

很可能不会带来任何改变(尽管由于您的问题尚不完全清楚,所以还是有所猜测)。 出于两个原因:1)除非代码会在非常热的路径中使用,否则即使一种方法比另一种方法快几纳秒也没关系。 2)最有可能的是,您的编译器优化器将足够聪明,可以生成在两种情况下都可以执行(即使不完全相同)的代码。 你测试了吗? 您有基准测试/配置文件吗? 如果不; 这样做的- 优化功能。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM