effective c++ 30 彻底了解inline的里里外外
大约 1 分钟
effective c++ 30 彻底了解inline的里里外外
本节主要介绍inline的条条框框。
分析
我们首先讨论inline的好处。
- inline函数相当于将代码copy到调用的地方,可以减少函数调用的额外开销。
- 可以替代define的宏函数却又比宏函数安全。
但是天下没有免费的午餐。
inline的坏处也很明显:
- inline可能造成程序体积膨胀
- 可能造成额外的换页行为,降低指令高速缓存命中率
因此我们就要趋利弊害,在适合inline的地方使用inline。至于什么场景适合,直接看总结,inline适合于小型被频繁调用的函数身上,通常在10行以下。
文中,作者也提到构造函数和析构函数通常也不要定义为inline的。
另外一点,对于一些header-only的c++ library,inline会大量的使用,因此对于这类c++ library就需要对其体积膨胀的不利影响进行评估。
总结
- 将大多数inline限制在小型、被频繁调用的函数身上。这可使日后的调试过程和二进制升级更容易,也可使潜在的代码膨胀问题最小化,使程序的速度提升机会最大化。
- 不要只因为function templates出现在头文件,就将它们声明为inline。
Loading...