重读《Programming Pearls》之九:Code Tuning

这是比较麻烦的一章——因为优化到这一级的话是对性能非常计较了,而且代码优化跟个人经验和素质有关:这个跟写代码者自己的素养很有关系,一般情况下优秀的程序员能够自然地进行代码优化。

 

不过,在更高级别没有办法优化的情况下,代码优化还是能带来非常显著的效果的。

 

 

名言:

 

Good Programers keep efficiency in context:  it is just one of many problems in software, but it is sometimes very important.

 

Caching缓存的考虑(注:目前已经广泛应用了,在对数据量大、性能要求比较高的应用上比较普遍)

 

常见代码优化举例:

Problem One--Integer Remainders.取模的速度一般是其它操作的1/10

 

Problem Two--Functions, Macros and Inline Code.理解编译器操作,从编译原理角度理解这三种代码的速度

 

Problem Three--Seqential Search.

 

普通版本

 

placing a sentinel value at the end of the array:在数组末尾设置标记值

 

循环展开,利用编译器优化,并行处理

 

 

Problem Four--Computing Spherical Distances.(空间换时间的一个例子)

 

Problem Five--Binary Search.(细微的技术)

 

方法——合并测试、利用代数恒等式、循环展开

代码对比:

代码一:

 

代码二:

 

代码三:

 

 

 

代码四:

 

 

 

 

代码五:

 

 

 

 

 

 

Principles:

 

The Role of Efficiency.正确第一!

 

Measurement Tools.找出优化的关键位置

 

Design Levels.确保其它层次已经达到最优再进行代码优化

 

When Speedups Are Slowdowns.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值