个人对网上流传已久的《提高C语言效率》的质疑
来源:互联网 发布:sql exists什么作用 编辑:程序博客网 时间:2024/05/03 07:25
人对网上流传已久的《提高C语言效率》的质疑
系统平台:windowns XP
测试软件:keil 4
优化等级:默认的8 level
测试方法:反汇编
测试时间:2011·10·26(这个是以前写的了~)
小鸟刚学C语言时就只知道拖着老鸟的大腿走,大侠说什么,偶们就做什么,从来不想为什么,从来不怀疑(-_-)。时隔几年之后,恍然大悟,原来老鸟也是拖着老老鸟的腿走+_+)。今日偶然间看见陈旧的文档《提高C语言效率》,突然脑子一热:咋就成了高效(搞笑)了呢?郁闷3秒钟之后,瞬间打开keil4(PS:为什么打开keil 4? 习惯而已)。
哒哒哒,搞了几行代码(⊙o⊙)。
质yi疑一: 使用for循环时,用i--比用i++效率高。
测试源码:
/*这两个for语句的功能一样*/
#include <stdio.h>
int main()
{
unsignedchar a = 0,i = 0;
while(1)
{
for(i=0;i<3;i++)
{
a++;
}
for(i=3;i>0;i--)
{
a++;
}
}
return0;
}
测试结果:
如图1所示,看见了吗,前一个for使用i++,反汇编出5条指令,而后一个for使用i--却反汇编出8条指令!!!(PS:改变优化等级后,虽然会影响反汇编结果,但是也没出现使用i--比i++好的情况~,增加循环次数也未改变这个question~)
疑问:难道是蒙人的?还是咋的?
图1
质疑二:做乘除法运算时,用 移位 代替 乘除运算符。
测试源码:(懒一下!(*^__^*) ~)
测试结果:
(PS:只测试了 乘法~~~黑嘿T^T)
结果令人很意外。只能说keil太神奇了,不同的数据,有不同的结果(一会高,一会低,哎~),让偶摸不着头脑~~部分结果如图2、图3所示。
图2
图3
厄,还有其它测试,偶就不做了,感兴趣的童鞋可以自己哒哒哒,偶也(⊙o⊙)。
总结,虽然是质疑,但是偶还是相信:存在就是有道理的~!(不确定因素还是很多D,比如说:编译器类型,编译器版本,优化设置等)。=_=,好了,就到这里咯,欲知以后情节,请听下回哒哒哒(~ o ~)
- 个人对网上流传已久的《提高C语言效率》的质疑
- 对网上流传的水波算法的质疑
- 对网上流传的JAVA面试题或笔试题其中几个题目答案的质疑
- 对网上流传的各个VS2005 Team Suite版比较及个人安装体会
- 对网上流传的各个VS2005 Team Suite版比较及个人安装体会
- 网上流传的一个Canny边缘检测算法C语言实现的bug
- 对网上流传的水波算法的补充与修正
- 流传已久的荒唐故事(一)-铅笔与太空笔
- 网上转载的Ext.form.ComboBox,个人觉得很好很强大,困惑已久的数据加载问题终于搞懂!
- 提高c语言效率
- 个人对c语言的理解
- 个人对c语言指针的理解
- 单片机提高C语言代码效率的方法
- 关于提高C语言执行效率的几点
- C语言提高代码效率的几种方法
- 如何提高MSP430 C语言代码的执行效率
- 提高个人效率的12个妙招
- 提高个人效率的12个妙招
- select(poll)系统调用实现解析(二)
- [MSSQL]自定义提取中文,简体中文,英文,数字函数汇总
- 沁园春的来历(转)
- 轻松编写C++单元测试
- JAVA的变量
- 个人对网上流传已久的《提高C语言效率》的质疑
- cvmSet cvmGet
- Android中shape的使用
- 数据库连接池
- Add/Remove software 或yum从光盘安装
- vsftp实现只能上传不能下载、删除权限配置
- <转>inux设备模型深探
- ExtJS4.0.7 树组建treePanel简单介绍
- java中内存分配的问题