C代码性能优化

高效编程的一个重要宗旨就是:不停地重新检查程序,在操作中尽量采取高效率的操作和快速的存取对象,尽量减少低效率的操作和缓慢的存取对象!

大家都知道,数据结构和程序的算法是决定程序性能的两大要素!说实话想要写出合理的代码,必须了解编译器是如何生成代码的,以及cpu是如何执行程序的。

  • 优化代码框架
    1. 合理的优化代码结构,减少函数调用层次和嵌套深度,甚至有些函数可以使用内联或define来定义,以减少函数调用所占时间
  • 简化函数
    1. 充分理解函数所要实现的功能,用最简单的方式去实现,去掉冗余的逻辑。
    2. 优化循环,有些操作可以放到循环外做,不必每次都做
  • 选取合适的算法和数据结构
    1. 通常使用指针比数组要快很多,对于频繁插入删除的操作,使用链表要比使用数组快很多
  • 减少运算强度
    1. 尽量使用位操作代替计算
    2. 公共子表达式可以提前计算
    3. 通过查表来换取时间
    4. 前缀改成后缀, i++改成++i
  • 利用操作系统和CPU本身的优势
    1. 多核和多处理器的某种组合上并行的运算;可以将任务有计划的分配给特定的处理器
    2. 充分利用操作系统的位宽,尤其是拷贝等操作上,但这个地方要注意字节对齐
    3. 充分利于CPU的流水
  • 编译选项
    1. 编译器优化:在编译时使用命令行选项 -finline”、“-O1”或者更高级别编译选项时
    2. 开启编译选项-O2

以上部分原帖:https://blog.csdn.net/chenyq991/article/details/79047741,这里将有更加详细的解释

将记录关于《C程序性能优化-20个实验与达人技巧》的一些记录

1、编译器运作流程

在编译器编译时加上编译选项(-O)可以优化生成的汇编代码

2、指令流水线

3、高速缓存

尽量将变量分配给高速缓存的寄存器中

3、基础优化概括

  • 由于CPU内部有若干个加算器,将若干个加法算法并列起来同时计算,变量个数越多,处理时间反而越短!
  • 在进行数据乘除的运算时,采用寄存器内数据的移位操作来提高效率
  • 在对内存访问时一定要选择合适大方式比如指针。。
  • if-else-语句中不成立的条件比成立条件要消耗时间
  • 64位操作系统执行函数调用(有无参数)一般都在1.3~1.4纳秒、32位操作系统执行函数调用有参数2.2纳秒,无参数1.3纳秒
  • 数据存取

  • 字符串操作

  • GCC的优化选项

在使用gdb和Eclipse调试工具时无需指定优化选项

  • 复杂运算简化:将循环内的乘法运算置换为加法运算的方法
  •  整数转换成字符串--利用数字查字符标的方式

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值