c++性能优化:内联性能方面的考虑

  1. 调用间优化
    我们之前讨论的内联主要是防止函数调用产生的开销,现在还有一种调用间优化,调用间的优化是代码级的,这是建立在一种更加广泛的上下文关系上。比如一个函数的返回结果需要在另一个函数中使用,如果这两个函数都使用了内联,那么可能编译器进行优化会直接将函数内联,得到一个返回值。比如下面这个例子:
float getfloat()
{
    return 90;
}

float cal(float a)
{
    return a-1;
}

int reg0=cal(getfloat());

上面的例子如果getfloat和cal两个函数都进行内联的话,编译器就可以直接得出结果89,省去了在运行时调用的时间。并且这种调用间的优化往往会比避免调用更加提高性能。但是,对于这种方式在作用时需要加上易混淆和易变性的假设,这一点是与原代码冲突的。因此如果真的要进行这样的优化,建议了解你当前使用的这款编译器的构造。这样才能避免后续带来的麻烦。
2. 为何不使用内联
内联实际上是直接嵌入代码,如果我们内联一段很长的函数,并且调用多次,虽然我们在内联时的确提高了性能;但是却因为多次调用大大增加了代码量,代码量的膨胀又带来了性能的降低,那如果降低的还比性能提升的多的话,这样的交换也是得不偿失。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值