虽然博主使用内联函数也已经有不短的一段时间
但是有些东西仍然是第一次知道,所以记录下来喽...
【内联函数的一些优点】
1.内联函数可以消除宏的很多缺陷也更易于使用
2.同时它同样消除了函数调用的开销而获得比普通函数更高的效率
3.内联函数可以使编译器对代码进行进一步的优化
4.宏不存在指定类型的参数从而可以对多种类型使用,使用内联函数模板可以达到相同的效果且类型安全
【将所有函数都作为内联函数不好么?】
由于使用内联函数要插入代码所以会增加代码长度
代码长度增加会占用更多的内存而降低程序执行的速度
因为随着内存需求的增加,缓存缺失和缺页的可能性也会增加
缓存缺失会导致微小的延迟
但是缺页会导致很大的延迟,因为需要从硬盘中重新读取
所以不恰当地使用内联函数反而会降低程序的速度而且增大程序的体积
而正确地使用会极大提高程序的性能
【原则】
只对小型的方法使用内联函数,如成员的 Setter 和 Getter,通常代码不超过三行
【Visual C++ 编译器中】
微软的 Visual C++ 编译器中支持 __inline 和 __forceinline 两个关键字
__inline : 编译器会进行成本/收益分析,只有有益时才将该函数作为内联函数
__forceinline : 编译器将强制把该函数作为内联函数 ( 可有些时候编译器也不遵守 )
PS:其中一些建议摘自 《游戏编程精粹2》,书的出版日期已经过了快二十年,计算机内存大大增加,所以有些较为极端的技巧已经不再适用或者价值已经削弱,具体使用方法还需要根据经验而定~
调 BUG 就是酱婶儿的 ↓↓↓