oll*_*zhu 13 c c++ inline compiler-optimization
我注意到Google的C++样式指南警告不要使用循环或switch语句来内联函数:
另一个有用的经验法则:使用循环或switch语句内联函数通常不具成本效益(除非在通常情况下,从不执行循环或switch语句).
对StackOverflow的其他评论重申了这种观点.
为什么带有循环或switch语句(或gotos)的函数不适合或与内联兼容.这适用于包含任何类型跳转的函数吗?它适用于带if语句的函数吗?另外(这可能有些不相关),为什么内联函数不推荐使用值?
我对这个问题特别感兴趣,因为我正在处理一段对性能敏感的代码.我注意到在内联包含一系列if语句的函数后,性能下降得非常显着.我正在使用GNU Make 3.81,如果那是相关的.
ric*_*ici 16
使用条件分支内联函数会使CPU更难以准确预测分支语句,因为分支的每个实例都是独立的.
如果有多个分支语句,成功的分支预测比调用函数的成本节省了更多的周期.
类似的逻辑适用于使用switch语句展开循环.
引用的Google指南未提及有关返回值的函数的任何内容,因此我假设该引用位于其他位置,并且需要使用明确引用的不同问题.
| 归档时间: | 
 | 
| 查看次数: | 2930 次 | 
| 最近记录: |