编程技巧干货笔记 【关于内联函数】
2017-09-11 09:29
197 查看
虽然博主使用内联函数也已经有不短的一段时间
但是有些东西仍然是第一次知道,所以记录下来喽...
【内联函数的一些优点】
1.内联函数可以消除宏的很多缺陷也更易于使用
2.同时它同样消除了函数调用的开销而获得比普通函数更高的效率
3.内联函数可以使编译器对代码进行进一步的优化
4.宏不存在指定类型的参数从而可以对多种类型使用,使用内联函数模板可以达到相同的效果且类型安全
【将所有函数都作为内联函数不好么?】
由于使用内联函数要插入代码所以会增加代码长度
代码长度增加会占用更多的内存而降低程序执行的速度
因为随着内存需求的增加,缓存缺失和缺页的可能性也会增加
缓存缺失会导致微小的延迟
但是缺页会导致很大的延迟,因为需要从硬盘中重新读取
所以不恰当地使用内联函数反而会降低程序的速度而且增大程序的体积
而正确地使用会极大提高程序的性能
【原则】
只对小型的方法使用内联函数,如成员的 Setter 和 Getter,通常代码不超过三行
【Visual C++ 编译器中】
微软的 Visual C++ 编译器中支持 __inline 和 __forceinline 两个关键字
__inline : 编译器会进行成本/收益分析,只有有益时才将该函数作为内联函数
__forceinline : 编译器将强制把该函数作为内联函数 ( 可有些时候编译器也不遵守 )
PS:其中一些建议摘自 《游戏编程精粹2》,书的出版日期已经过了快二十年,计算机内存大大增加,所以有些较为极端的技巧已经不再适用或者价值已经削弱,具体使用方法还需要根据经验而定~
调 BUG 就是酱婶儿的 [b]↓↓↓[/b]
[b]
但是有些东西仍然是第一次知道,所以记录下来喽...
【内联函数的一些优点】
1.内联函数可以消除宏的很多缺陷也更易于使用
2.同时它同样消除了函数调用的开销而获得比普通函数更高的效率
3.内联函数可以使编译器对代码进行进一步的优化
4.宏不存在指定类型的参数从而可以对多种类型使用,使用内联函数模板可以达到相同的效果且类型安全
【将所有函数都作为内联函数不好么?】
由于使用内联函数要插入代码所以会增加代码长度
代码长度增加会占用更多的内存而降低程序执行的速度
因为随着内存需求的增加,缓存缺失和缺页的可能性也会增加
缓存缺失会导致微小的延迟
但是缺页会导致很大的延迟,因为需要从硬盘中重新读取
所以不恰当地使用内联函数反而会降低程序的速度而且增大程序的体积
而正确地使用会极大提高程序的性能
【原则】
只对小型的方法使用内联函数,如成员的 Setter 和 Getter,通常代码不超过三行
【Visual C++ 编译器中】
微软的 Visual C++ 编译器中支持 __inline 和 __forceinline 两个关键字
__inline : 编译器会进行成本/收益分析,只有有益时才将该函数作为内联函数
__forceinline : 编译器将强制把该函数作为内联函数 ( 可有些时候编译器也不遵守 )
PS:其中一些建议摘自 《游戏编程精粹2》,书的出版日期已经过了快二十年,计算机内存大大增加,所以有些较为极端的技巧已经不再适用或者价值已经削弱,具体使用方法还需要根据经验而定~
调 BUG 就是酱婶儿的 [b]↓↓↓[/b]
[b]
相关文章推荐
- 编程技巧干货笔记 【关于一些运算符的效率】
- 编程技巧干货笔记 【快速伪随机数生成】
- 编程技巧干货笔记 【数组范围界定】
- 编程技巧干货笔记 开篇
- 编程技巧干货笔记 【Vector / Set OR Map ?】
- 编程技巧干货笔记 【Copy-On-Write】
- 关于《Java数字图像处理-编程技巧与应用实践》一书 源代码
- Go学习笔记 - 关于Java、Python、Go编程思想的不同
- 关于权限的编程技巧
- 关于Unix时间戳的编程技巧
- cocos2d-x系列笔记技巧篇(2)---关于CREATE_FUNC宏的用法
- 关于JAVA多线程编程的一点笔记
- 编程技巧之嵌入式C语言完全学习笔记及案例[图]
- 关于编程技巧的书
- Qt学习笔记--编程技巧总结
- Scala学习笔记(3):纯函数式编程的一些思想和技巧
- 关于vb编程之字符串连接/拼接的方法与技巧
- 鱼c笔记——Python的GUI编程(七):Tkinter的Text组件实用技巧
- 编程笔记(objective-c :关于属性)
- think in java第十五章关于网络编程的读书笔记