C--《C和指针》第8章读书笔记之效率问题

作者在第8章有几个小例子来测试指针的效率问题。他当年用的处理器是摩托罗拉的M6800,编译器不清楚。下面是他的例子。原谅我的电子版的太花了。。


上面这个例子的反汇编行数比较多。

运用了指针及一些技巧后,反汇编代码迅速降低,运行效率看起来变高了。

但是,同样的代码我在VS2010上面试了下。上面第一个例子对应的代码如下:

上面第2个例子对应的反汇编代码如下:

我们看到,第二个运用指针的例子,在VS2010上面,反汇编的代码反而更多了。

      这说明不同的CPU和编译器,产生的汇编是不一样的。另外现在编译器技术非常先进,有时能把你写的很烂的代码,优化后和写的好的代码在汇编上看不出什么差距。

 

        在这一部分的结尾处,作者写了个提示,提出了这个问题,即效率和可维护性的取舍;在我看来,除非是某些场合确实追求峰值效率,必须对即时发生的事件做出实时响应,可以运用一些技巧或直接用汇编。但是在大部分场合,还是应该以可维护性和可读性为主。

         有时为了追求一点点运行时的效率,所付出的代价是:程序难写在前,难于维护在后。如果程序无法运行或无法维护,那它的执行速度再快也无济于事。另外从本质上说,复杂的用法比简单的用法所涉及的风险要大得多,维护代码的程序员可能并不如你经验丰富,程序维护是软件产品的主要成本所在,所以那些使程序维护工作更为困难的编程技巧应慎重使用。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值