c语言代码性能提升小技巧

1、善用位运算

乘除运算相比加减运算需要更过的cpu时间,所以可以使用位运算进行计算优化。

(1)对于一个整数m乘以2^n的情况,使用位运算m << n。

(2)对于一个整数m除以2^n的情况,使用位运算m >> n。

(3)对于一个整数m对2^n求余数的情况,使用位运算m & (2^n - 1),实际使用当中,也许除数不是2的幂次方,如果想提高计算速度,可以把除数向上改成2的幂次方。

其他的情况很多很多,读者可以多留心观察,还比如使用bitmap,bitmap也算是一种位运算。

对于无法进行优化计算的场景,可以考虑使用数组做成table,代码计算时直接查找table即可,定义table数组时,可以加上const进行修饰变量,让数据和代码段一起紧挨保存,减少CPU中RAM内存的消耗。

2、尽量使用局部指针访问外部变量

将外部变量的地址存到函数自己的栈当中,然后通过这个栈内的指针去访问这个外部变量。

3、减少函数调用层次和嵌套深度

可使用inline内联或define,不过inline要考虑内存和指令缓存,适用于经常被调用的不大的函数。

4、循环内部的处理代码越少越好

如while和for循环,及时使用continue继续下一次循环或者break语句终止循环。

5、内存对齐

当数据结构很大的时候,把经常用到的成员放到结构体的最前面,当然,定义结构体时多考虑内存对齐,可以减少代码内存消耗,不过这可能会牺牲一些代码的可读性。

6、尽量少使用Linux的系统调用

因为用户态和内核态切换需要时间,举一个例子就可以说明,POSIX信号量实现时将文件映射到了进程的地址空间中,并且没有使用系统调用来操作各自的信号量,所以才使得在linux系统中相比XSI信号量提高了很多倍的性能。

可参考文章:(65条消息) linux下的系统调用全过程_一码当先-CSDN博客_linux系统调用

7、if条件语句概率性最大的条件放在最前面以及尽量减少if else嵌套深度

如 if (a > 0 || b > 0)... else ...,a > 0概率更大,更多时候只需要判断a>0即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值