当前位置:网站首页>C--《C和指针》第8章读书笔记之效率问题
C--《C和指针》第8章读书笔记之效率问题
2022-08-09 00:00:00 【无锡的老白】
作者在第8章有几个小例子来测试指针的效率问题。他当年用的处理器是摩托罗拉的M6800,编译器不清楚。下面是他的例子。原谅我的电子版的太花了。。
上面这个例子的反汇编行数比较多。
运用了指针及一些技巧后,反汇编代码迅速降低,运行效率看起来变高了。
但是,同样的代码我在VS2010上面试了下。上面第一个例子对应的代码如下:
上面第2个例子对应的反汇编代码如下:
我们看到,第二个运用指针的例子,在VS2010上面,反汇编的代码反而更多了。
这说明不同的CPU和编译器,产生的汇编是不一样的。另外现在编译器技术非常先进,有时能把你写的很烂的代码,优化后和写的好的代码在汇编上看不出什么差距。
在这一部分的结尾处,作者写了个提示,提出了这个问题,即效率和可维护性的取舍;在我看来,除非是某些场合确实追求峰值效率,必须对即时发生的事件做出实时响应,可以运用一些技巧或直接用汇编。但是在大部分场合,还是应该以可维护性和可读性为主。
有时为了追求一点点运行时的效率,所付出的代价是:程序难写在前,难于维护在后。如果程序无法运行或无法维护,那它的执行速度再快也无济于事。另外从本质上说,复杂的用法比简单的用法所涉及的风险要大得多,维护代码的程序员可能并不如你经验丰富,程序维护是软件产品的主要成本所在,所以那些使程序维护工作更为困难的编程技巧应慎重使用。
边栏推荐
猜你喜欢
随机推荐
C#一些简单的知识
mysql建表常用sql语句
OFDM 十六讲 6 Inter symbol Interference
并发编程第4篇,锁的分类
监听浏览器刷新事件
Win10安装 pycocotools
360“卸载不下去”引热议 周鸿祎重申是谣言:步骤繁琐出于安全考虑
TensorFlow learning path deep learning 】 【 5: several methods to prevent a fitting and within DNN TensorFlow implementation
并发专题第一篇,多线程快速入门和简单介绍
第四章 SQL与关系数据库基本操作(上)
Ubuntu下Docker安装Mysql (快速简便)
OSPF小实验
自学FPGA:Verilog基本语法规则(一)
IDEA常用插件及代快捷键模板整理
SAP ABAP debug的七种方法及错误消息定位
STP---生成树协议总结
第六章 物理层
GRPC学习(An RPC library and framework)
The most commonly used regular expressions
C#中的&、&&、|、||的区别