内联函数 inline
来源:互联网 发布:caffe fcn边缘 编辑:程序博客网 时间:2024/06/05 16:33
inline 函数 :对此函数的每一个调用 都以 函数本体 替换之【1】简介 : inlining函数通常一定被置于头文件内,因为大多数建置环境 在 编译过程 中 进行 inlining行为 inlining在大多数 C++程序中是编译器行为【2】缺点 :增加你的 目标码的 大小 (一台 内存 有限的 机器上 ,inlining会造成 程序体积太大) inline造成的 代码膨胀 会 导致 额外的 换页行为,降低 指令高速缓存装置的 击中率,以及伴随 一些 效率 损失【3】优点 :如果函数 本体 很小 ,inlining确实 可能 导致 较小的 目标码 和 较高的指令高速缓存装置 集中率【4】几个要点: 一:Template的 具现化与 inlining无关 原因 :所有根据 此template 具现化 出来的函数 需要内联 才应该是 inlined 二:virtual函数 不是 inlining 原因 :virtual 意味 直到运行期 才确定 调用哪个函数 inline 意味 执行期前 调用动作替换为 被调用函数 本体 三 :如果程序要取某个 inline 函数的 地址 ,编译器通常必须为此函数 生成一个outlined函数本体 inline void f(){} void (*pf)() = f; f(); //是 inlined (*pf)(); //不是 inlined 四 :有时候编译器会生成 构造函数 和 析构函数的 outlined副本 五 :inline 函数无法随着程序库的升级而升级 原因 :[1]如果f是程序库内的 inline 函数,改变非 f ,所有 用到f的客户端 程序 必须重新编译 [2]如果 f 是 non-line 函数 ,一旦有修改 ,客户端只需 重新连接 就好,远比重新编译的 负担少很多 [3]如果 程序 动态链接库 ,升级版函数 甚至 可以不知不觉 地 被应用程序 吸纳 六 :大部分 调试器 面对 inline 函数 都 束手无策【5】总结 :一 :将大多数 inlining 限制在小型 ,被频繁调用的 函数 身上 。 这可使日后 的 调试过程 和 二进制 升级 更容易 , 也可使 潜在 的 代码膨胀 问题 最小化,是程序 的 速度 提升机会 最大化 。 二 :不要因为 function templates 出现 在 头文件 ,就将他们 声明 为 inline
1 0
- 内联函数 inline
- 内联函数inline
- inline 内联函数
- 内联函数 Inline Function
- C++内联函数(Inline)
- 关于内联函数inline
- 内联(inline)函数~
- C++内联函数(Inline)
- inline 内联函数
- C++内联函数(Inline)
- 内联函数 -- inline总结
- inline内联函数
- C++内联函数(Inline)
- 内联函数(Inline Function)
- C++内联函数(Inline)
- CG_INLINE,inline 内联函数
- C++内联函数 inline
- 内联函数inline
- 大规模网站架构技术原理透析(1)
- java语法基础
- C++中判断一个float类型数据是否为整数
- 基于Canvas的刮刮卡刮奖小控件lucky-card
- Visual Studio 2008 可扩展性开发(八):关于用户界面的种种(下)
- 内联函数 inline
- [转]在CentOS上安装Python
- 分布式常用组件和算法
- 使用 Xcode7 打包 HTML5+ 编写的应用 ipa 文件
- hadoop 源码中NameNode与DataNode主要的类目录
- 基于zepto.js的移动端H5单页面跟随手指滑动切换控件pageSlider
- centos下安装maven
- centos7上hadoop2.6和hbase1.0安装
- 《机器学习》读书笔记,第三章决策树学习