高效的C编程

通过一定的风格来编写C程序,可以帮助C编译器生成执行速度更快的ARM代码。

对性能有严格要求的应用, 经常会包含一些对系统性能起决定性作用的关键程序,

可参考以下几点进行优化:

1. 对局部变量、函数参数和返回值要使用signed和unsighed int类型。 这样可以避免类型转换, 而且可高效地使用ARM的32位数据操作指令。

2. 最高效的循环体形式是减计数到零(counts down to zero)的do-while循环。

3. 展开重要的循环来减小循环开销。

4. 不要依赖编译器来优化掉重复的存储器访问。 指针别名会阻止编译器的这种优化。

5. 尽可能把函数参数的个数限制在4个以内。 如果函数参数都存放在寄存器内,那么函数调用就会快得多。

6. 按元素尺寸从小到大排序的方法来安排结构体, 特别是在thumb模式下编译。

7. 不要使用位域, 可以用掩码和逻辑操作来替代。

8. 避免除法, 可以用倒数的乘法来替代。

9. 避免边界不对齐的数据。 如果数据有可能边界不对齐, 那么就要使用char *指针类型来访问。

10. 在C编译器钟使用内嵌汇编可以利用到C编译器本来不支持的指令或者优化。

 

 

 

 

高效的寄存器分配

1. 应该尽量限制函数内部循环所用局部变量的数目, 最多不超过12个, 这样, 编译器就可以把这些变量都分配给ARM寄存器。

2. 可以引导编译器, 通过查看是否属于最内层循环的变量来确定某个变量的重要性。

 

高效地调用函数

1. 尽量限制函数的参数, 不要超过4个, 这样函数调用的效率会更高。 也可以将几个相关的参数组织在一个结构体中, 用传递结构体指针来替代多个参数。

2. 把比较小的被调用函数和调用函数放在同一个源文件中,并且要先定义, 后调用, 编译器就可以优化函数调用或者内联较小的函数。

3. 对性能影响较大的重要函数可使用关键字_inline进行内联。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值