关于inline函数

 对于一个一般函数或者一个成员函数是否应该inline我表示很迷惑。网上的说法是函数内部代码简短且经常被调用到,那么这个函数应该inline。怎么样的代码属于简短,

什么情况下属于经常被调用到,这个界限到底在哪里。而且这个inline也只是建议编译器对函数调用进行展开代码的动作,编译器是否照办还不确定。这里只知道几种情

况下的inline函数不会被编译器展开。

  • 构造和析构函数
  • 递归函数
  • virtual函数
  • 函数内含有循环和分支复杂的代码
使用inline函数的优点:

  • 没有函数调用的开销
  • 当函数调用时没有参数入栈和出栈的开销
  • 没有函数返回的开销
  • 增加了代码运行的cache命中率
  • 便于编译器更好的优化代码,去除无用的代码,更好的分支预测
缺点:

  • 增加了函数代码生成后的目标代码的大小,如果太大而不能放入cache,就减少了cache的命中率
  • inline后函数内变量可能用到更多的寄存器,增加了寄存器的使用开销
  • 如果有人修改了inline函数,那么所有调用这个函数的代码都得重新编译
  • 不适用于嵌入式系统,因为在嵌入式系统中,加载可执行文件的空间是有限的


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值