条款30:透彻了解inline的里里外外
来源:互联网 发布:sql数据类型转换 编辑:程序博客网 时间:2024/04/30 17:12
结论1:将大多数inline限制在小型、被频繁调用的函数身上。这可使日后的调试过程和二进制升级更容易,也可使潜在的代码膨胀问题最小化,使程序的速度提升机会最大化。
inline函数背后的整体观念是,将”对此函数的每一个调用“都以函数本体替换之。这样做会增加目标码的大小,造成的代码膨胀亦会导致额外的换页行为,降低指令高速缓存装置的击中率,以及伴随这些而来的效率损失。
inline只是对编译器的一个申请,不是强制命令。这项申请可以隐喻提出,也可以明确提出。隐喻方式是将函数定义于class定义式内,这样的函数通常是成员函数或friend函数;明确声明inline函数的做法则是在其定义式前加上关键字inline。大部分编译器拒绝将太过复杂的函数inlining,而所有对virtual函数的调用也都会使inlining落空,inlining在大多数C++程序中是编译期行为。一个表面上看似inline的函数是否真是inline,取决于建置环境,主要取决于编译器。
inline函数无法随着程序库的升级而升级。换句话说如果f是程序库内的一个inline函数,客户将”f函数本体“编进其程序中,一旦程序库设计者决定改变f,所有用到f的客户端程序都必须重新编译。
大部分调试器面对inline函数都束手无策。
inline函数的调用有可能被inlined,也可能不被inlined,取决于该调用的实施方式,编译器通常不对”通过函数指针而进行的调用"实施inline。
结论2:不要只因为function template出现在头文件,就将它们声明为inline。
在决定哪些函数该被声明为inline而哪些函数不该时,掌握一个合乎逻辑的策略:一开始先不要将任何函数声明为inline,或至少将inline施行范围局限在那些"一定成为inline"或“十分平淡无奇”的函数身上。
- 条款30:透彻了解inline的里里外外
- 条款30:透彻了解inlining的里里外外
- 条款30:透彻了解inlining的里里外外
- 条款30:透彻了解inlining的里里外外
- 条款30:透彻了解inlining的里里外外
- 条款30:透彻了解inlining的里里外外
- 条款30:透彻了解inlining的里里外外
- Effective C++:条款30:透彻了解inlining的里里外外
- 《Effective C++》:条款30:透彻了解inlining的里里外外
- 读书笔记《Effective C++》条款30:透彻了解inlining的里里外外
- 透彻了解 inline的里里外外 绝不是那么简单
- 《Effective C++》学习笔记条款30 透彻了解inlining的里里外外
- 条款30 透彻了解inlining的里里外外
- 透彻了解inline的里里外外——effective c++学习笔记
- item30: 彻底了解inline的里里外外
- C++之透彻了解inlining的里里外外(30)---《Effective C++》
- 《Effective C++》读书笔记之item30:透彻了解inlining的里里外外
- Item 30:理解inline函数的里里外外 Effective C++笔记
- erlang妙用try..catch写出优雅的代码
- Eclipse,到了说再见的时候了——Android Studio最全解析
- linux sysstat 安装使用 及参数说明
- Java集合排序
- struts使用时间标签控件
- 条款30:透彻了解inline的里里外外
- 黑马程序员--String类--
- mybase desktop edition 死掉
- page coloring小结
- acdreamoj1112 sg函数
- 二叉树的应用(1)--二叉树排序树基本操作
- exists 与 in 的区别
- Properties类读写.properties配置文件
- Mac OSX & iOS 操作系统学习笔记01——OSX进化史