| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3077 人关注过本帖
标题:[讨论]for与goto 哪个的效率更高?
只看楼主 加入收藏
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
以下是引用野比在2007-6-19 23:29:39的发言:
用clock()函数...
我运行了1e10次 long=long*long
结果耗时:
for循环 4736ms
goto 4547ms
..
over

差两秒有多,乍地会有这种差别的!


/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-20 09:22
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 


mov eax $0000000b
dec eax
jnz -$03


xor eax eax
cmp eax $0a
jnle +$0c
add eax $01
jno +$05
call @intover
jmp -$11
ret

[此贴子已经被作者于2007-6-20 12:41:20编辑过]

2007-06-20 09:49
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
在C++里看似是(其实我只是开个玩笑),变成汇编了我就不知道了....

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-20 09:55
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

一般使用goto都是为了追求速度,linux内核就有不少goto

2007-06-20 09:57
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
以下是引用ioriliao在2007-6-20 9:22:28的发言:

差两秒有多,乍地会有这种差别的!

大锅... 1s=1000ms... NOT 100ms..
相差0.2秒左右...


女侠,约吗?
2007-06-20 19:49
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
看错了....

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-20 20:33
zcs302
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-3-6
收藏
得分:0 

个人认为效率应该是一样的
编译器会先转换成类似后者的语句再转换成汇编,然后就是机器了

2007-06-20 22:45
yz29631
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-6-20
收藏
得分:0 
以下是引用野比在2007-6-19 20:57:18的发言:
大侠, 你说啥呢? ..
汇编结果看行数就能看出效率吗?
汇编一句MUL需要几十个时钟周期, 一句INC只需要1个... 就算写10句还是比1句效率高..
这能说明问题吗?
更不要说还有JMP这些跳转了...效率不是看出来的, 是运行出来的..

循环10亿次简单乘法大概需要5秒的时间(Sempron 3000+, 1.6GHz/ 1GB RAM)
...5000毫秒, 足够看出差别了

表示赞同

2007-06-20 23:18
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
收藏
得分:0 
看来goto的效率高一些.

人生重要的不是所站的位置,而是所朝的方向
2007-06-23 13:06
uestcbutcher
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-6-29
收藏
得分:0 
第一次来论坛.挺热闹的。
其实goto 和 for 好像没有什么可比性.goto 一般用来在两层或以上的循环嵌套中跳出是非常方便的.
我就经常用goto,如果控制的好的话,可以节约大量代码.
不过,就像一个函数最好只有一个出口一样,goto 会破坏其通路的唯一性.
2007-06-29 11:16
快速回复:[讨论]for与goto 哪个的效率更高?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012846 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved