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

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


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

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

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

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

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

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

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

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


猜你喜欢

转载自blog.csdn.net/fxltsbl007/article/details/80607824