第5章 优化程序性能

 编写高效程序:
1.适当的算法和数据结构
2.编译器能够有效优化以转换成高效可执行代码的源代码
3.处理运算量特别大的计算,将一个任务分成多个部分
 程序优化:
1.消除不必要的工作
2.利用处理器提供的指令级并行能力,同时执行多条指令
 研究程序的汇编代码是理解编译器以及产生的代码会如何运行的最有效手段之一。

5.1优化编译器的能力和局限性

 编译器会考虑各种特殊情况如内存别名使用(两个指针指向一个位置),采取最安全的优化。

5.2表示程序性能

 引入度量标准:每元素的周期表

5.3程序实例

在这里插入图片描述

5.4消除循环的低效率

 程序实例中每次循环都要求向量的长度,可以保存起来,只需求一次长度。
 代码移动:识别要执行多次但是计算结果不会改变的计算

5.5减少过程调用

在这里插入图片描述
 每次循环都要调用get_vec_element来获取下一个向量元素。对每个向量引用,函数要把i与循环边界比较,会造成低效率。可以改成下图那样
在这里插入图片描述

5.6消除不必要的内存引用

 dest中的值从内存读出再保存,很浪费,因为下次读取的值就是上次保存的值。可以改成下图
在这里插入图片描述

5.7以后为CPU级别的优化用到再看

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值