effective c++条款30:透彻了解inlining的里里外外

版权声明:转载请注明出处,谢谢!!! https://blog.csdn.net/qhdhnbd110/article/details/83832748

inline函数的优点:

1. 避免了函数调用带来的额外开销(inline函数相当于宏定义,在编译期就被替换到调用处)。

2. 编译器会对inline函数进行最优化。

inline函数的缺点:

1. 如果inline函数过大并且多次调用,会造成可执行文件体积恐怖的增大。

2. 文件体积增大也会导致额外的换页行为,降低了命中率。 

3. inline函数无法被调试。

4. 被inline的函数无法随着程序库的升级而升级,如果inline函数需要被更新,那么客户的可执行文件需要被重新编译。

Get:

1. 编译器拒绝inline virtual函数;

2. 一个空的构造和析构函数看似可以inline,实际其中会包含一些由编译器产生的代码,所以构造和析构不是inline好的选择;

3. 即使编译器可以inline某个函数,但如果你在程序中调用了函数指针指向该函数,那么这个函数也不会被inline,因为编译器需要为该函数实现一个本体才能进行指针操作。

4. 记住80-20法则,选择那些%20的代码去想办法inline或者优化,而不是那%80,对那些代码优化那是徒劳的。

猜你喜欢

转载自blog.csdn.net/qhdhnbd110/article/details/83832748