内联函数
来源:互联网 发布:java参数构造 编辑:程序博客网 时间:2024/06/05 07:34
1 为什么需要有内联函数
当遇到普通函数调用时,程序会保存当前函数的执行现场,将函数中的局部变量及函数地址入栈,然后在将即将调用的新函数加载到内存当中,这个复杂的过程经历了参数的复制,跳转到所用的函数的内存位置,执行函数代码,返回值存储。等函数执行完毕,在获取之前函数调用的地址,回去继续执行那个函数,这是一个很消耗时间的过程。所以内联函数有如下好处:
1)编译器不需要调转其他地址执行函数调用,这样就不用保存当前的函数现场
2)避免了函数调用所带来的内存和时间开销
但是内联函数也会带来一些缺点:
1)使得程序的体积增加,占用内存
2)由于内联函数是在编译出展开,内联函数一旦变零,需要重新编译
2 关于内联函数需要注意的几点
1)当函数体直接在类内时,默认为内联函数
2)当函数体在类外实现时,若是需要是内联函数需要inline修饰
3)由于inline在编译期间展开,所以inline函数必须在调用该函数的所以cpp文件中定义,且同名的函数内容完全相同。更好的做法是:在。h文件中实现,
3 慎用内联函数的原因
1)代码边长,使得内存消耗增加
2)当执行函数的时间远远大于调用函数的时间,就不用考虑内联
3)类的构造函数和析构函数不用内联,因为他们还会去调用自己父类的构造函数和修购·析构函数不是看起来那么短
4)inline函数造成代码膨胀会进一步导致额外的换页行为,降低了指令高速缓存装置的命中率,以及伴随的效率降低
0 0
- 内联函数
- 内联函数
- 内联函数
- 内联函数
- 内联函数
- 内联函数
- 内联函数
- 内联函数
- 函数内联
- 内联函数
- 内联函数
- 内联函数
- 内联函数
- 内联函数
- 内联函数
- 内联函数
- 内联函数
- 内联函数
- [勇者闯LeetCode] 6. ZigZag Conversion
- 初用AndroidStudio的一些基本设置(图示)
- C函数学习
- Unity插件之-Dynamic Navigation系统寻路扩展插件
- 猜数字小游戏
- 内联函数
- C++命名空间 namespace的作用和使用解析
- redis
- Android数据库的增删改查(方式2)
- 数据结构实例<九>(IsHappy 快乐数)容易
- 关于人脸数据库一个很好的下载网站
- 二叉树
- 排座位
- Prufer序列 生成树定理