深入理解计算机系统—优化程序性能

写在前面:

这部分主要是对于怎样优化程序部分的笔记和理解。

优化 的主要的方式:

  1. 选择合适的算法和数据结构
  2. 编写编译器能够有效优化的代码
  3. 对于运算量特别大的任务可以分成多个部分,多核多处理器的并行计算。线程并行计算。

    就是实现代码的简单性和速度的权衡。

具体的步骤:
1. 消除程序内不必要的内容
2. 利用处理器提供的指令级并行能力

代码剖析程序:测量程序各个部分性能的工具,分析代码证=中低效的地方。
大多数的编译器都提供优化控制:gcc而言 -o1,-o2,-o3 让编译更全面优化

存储器别名使用:编译器必须考虑假设不同的指针可能指向存储器的同一个位置。
看似相同的过程会产生不同的结果。

编译器:可以采用叫做内联函数替换的方式进行优化
先转换为内联代码 再对这样的代码做整体的优化。

Java所使用的数组表示法采用边界检查,边界检查大大降低了程序出错的概率,但是也会减缓程序的执行。
消除循环的低效率:每次循环迭代都必须对测试条件进行条件求值,如果这个值不会随着循环的变化而变化,就没有必要每次都求一次,求一次然后每次使用就好。
这叫做代码移动的优化:识别代码中执行多次但是计算结果不会改变的计算,将计算移动到代码前面不会被多次执行的位置。

代码级上:看上去像是一次执行一条指令
实际的处理器:是同时对于多条指令求值,这个现象就是指令级并行,采用一些精密的机制老确保这种并行执行的行为正好获得机器级程序要求的顺序语义模型的效果。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值