簡體   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