第26章读书笔记

26章code-tuning techniques读书心得

书中列举了很多优化代码的实例,讲解的很清晰。我觉得没有必要把它再列举出来了,下面列出几点映像深刻的几点。

1. 优化代码在不同语言之间效果不同

  • Unswitching

首先看一个关于循环的例子,因为循环要执行多次,所以如果可以把循环中的判断移出循环的话,最好移出。代码如下:

clip_image002

这段代码把判断放在了循环中。改写后如下:

clip_image004

改进之后效率提升的效果如下:

clip_image006

这里的数据都是书中的数据,根据硬件,编译器都有不同。这里的数据都是以秒计数,估计拿自己的计算机测试数据肯定又会不同。可以看到每种语言经过优化后性能提升都不相同,所以使用不同编程语言优化后的性能可能跟我们预期的都不相同。

  • 数组取数

再看一个数组引用的例子,通常对数组取数的效率会比变量稍低。起码数组要计算偏移再赋值。那么可以通过保存对引用数组变量来提高效率。代码如下:

clip_image008

优化后如下:

clip_image010

测试结果如下:

clip_image012

结果令人非常吃惊,c++中效率不升反降。应该和c++的编译器有关。在这里typeCount为10,levelCount为100.

  • 总结

对程序的优化不要自以为是,每种语言每种编译器都是不同的!所以对程序优化之后一定要用一定的方法对优化进行测试。

2. 优化代码的博弈

世界上没有东西十全十美,为了提升性能,有时不得不牺牲程序的可读性可维护性等。就像会计中的有借必有贷,提升了一方面必然有时会下降另一方面。我们得在这之间做一个选择,除了达到性能要求之外,还要在最大程度上提高程序质量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值