版权声明:转载请注明出处,谢谢!!! 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,对那些代码优化那是徒劳的。