C 代码效率和代码size问题

1、什么时候用inline,什么时候不用。

一般情况下,inline函数会增大代码size,会增加代码执行效率(减少了函数跳转的开销)。如果你的运行环境内存空间很充裕,那就inline呗。但对于大部分嵌入式开发的情况,内存都很有限的,能减少一些size,还是减少的好。都是成本呐。

但在一些情况下,一定要用inline或者宏定义,因为代码size基本上也不会增加很多。比如:

void reg32_write(uint32 addr, uint32 val)
{
    80201e90:    d5033fbf     dmb    sy
    80201e94:    2a0003e0     mov    w0, w0
    80201e98:    b9000001     str    w1, [x0]
    80201e9c:    d65f03c0     ret
}

这样的汇编后,小于等于4行的,不要再做一个函数了,因为函数跳转也需要4行汇编。有些情况,编译器优化后,会更少一些。

    SETREG32(reg_addr_base + MicroContMuxSel,0x0); // MicroContMuxSel
    80202394:    b9424aa0     ldr    w0, [x21,#584]
    80202398:    52800001     mov    w1, #0x0                       // #0
    8020239c:    114d0000     add    w0, w0, #0x340, lsl #12
    802023a0:    97fffebc     bl    80201e90 <reg32_write>
具体看自己的代码了,建议自己做一下inline和非inline的比较,size差别不大,就用inline吧。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值