| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1817 人关注过本帖
标题:[讨论]for 和while语句哪个运行时间短?
只看楼主 加入收藏
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
15楼用TIME来计算时间,很好.我在6楼说当出现CONTINUE语句时WHILE的效率就应该相对高一点,理由我已经说了.我没有测试,自己想而已.

我的原则很简单:不做不喜欢的事!
2006-05-04 13:21
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

回复楼下的:
老弟,你可太粗心大意啦.
i=0;j=0;k=0;
while(i<10000)
{ //被我粗体的东东放这儿才等价吧?
while (j<10000)
{
k=i%(j+1);
j++;
}
i++;
}
好像不对吧!
犯低级错误不该呀.


真太感谢你了,差了好多好多,呵呵,不好意思了,
我重新编辑了下
#include <stdio.h>
#include <time.h>
#define AT
main()
{
int i,j,k=0;
long one,two;
printf("test1 begin:\n");
#ifdef AT
one=clock();

for(i=0;i<10000;i++)
for(j=0;j<10000;j++)
k=i%(j+1);
two=clock();
#endif
#undef AT
printf("test1 over!\n");

printf("The time cost is %f seconds\n",(two-one)/1000.0);

printf("test2 begin:\n");
#ifndef AT
k=0;
one=clock();
i=0;
while(i<10000)
{
j=0;
while (j<10000)
{
k=i%(j+1);
j++;
}
i++;
}
two=clock();
#endif
printf("test2 over!\n");
printf("The time cost is %f seconds",(two-one)/1000.0);
getch();

}


您再帮我看看。

[此贴子已经被作者于2006-5-5 13:18:37编辑过]


对不礼貌的女生收钱......
2006-05-04 14:37
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(soft_wind)/*此程序说明while循环要比for循环...
老弟,你可太粗心大意啦.
i=0;j=0;k=0;
while(i<10000)
{ //被我粗体的东东放这儿才等价吧?
while (j<10000)
{
k=i%(j+1);
j++;
}
i++;
}
好像不对吧!
犯低级错误不该呀.

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-04 14:46
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
我重新编辑了下,您再帮我看看

对不礼貌的女生收钱......
2006-05-04 14:56
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
这个结果是for比较省时间了,
答案截然相反了,呵呵

对不礼貌的女生收钱......
2006-05-04 14:57
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 

以下是引用jeely在2006-5-4 8:42:00的发言:

for 和 while循环是有区别的,前面是计数循环,后面的是条件循环.条件循环每进行一次都要判断条件是否满足,而计数循环不需要,只要不超出范围就可以进行下去.

-----------------------------------------------------------------------------------------------------------------昨既然说这不对,今天就要正面给个说法。事实上

for(表达式1;表达式2;表达式3){循环体;}

等价于

表达式1;
while(表达式2)
{循环体;表达式3;}

唯一的例外是:对for(; ;)来说,表达式2允许为空白。
此种情况下在while( )扩弧里写上1,二者就等价了。

个别人说continue和break导致for()速度劣于while(),完全错误。
因为一切都包含在上述等价变换关系中了。换句话说,continue
并不为while( )独享,for( )也可用的啦。


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-05 10:19
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
还有一个人云亦云的错误观点,即吹嘘C的高效率。例如几乎所有的作者都说“一般只比汇编程序生成的目标代码效率低10~20%”,全是胡说、以讹传讹。本人的测试结果,粗略说就是同样的整型运算量,下列3者所花时间约为
MASM 5.0 汇编 =1单位
MS-FORTRAN 5.1=2单位
TURBOC 2.0 C =3单位
俺不痛心别的,痛心谭浩强这样的老专家为什么就不能打开电脑试上一试?实践是检验真理的唯一标准讲了多少年了,学术界居然也不爱听,究竟咋回事?

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-05 10:32
长风破浪
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2005-10-9
收藏
得分:0 

while,要快一点了


The way ahead is long; I see no ending, yet high and low I’ll search with my will unbending.
2006-05-05 10:52
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
以下是引用长风破浪在2006-5-5 10:52:00的发言:

while,要快一点了

喏,这不又来一位自以为是的高人?


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-05 11:04
高阁逆风
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:508
专家分:321
注 册:2006-4-29
收藏
得分:0 
其实我也觉得应该差不多!

      上天安排我做了个多情的人,却又安排我遭遇了无数绝情的人,所以我最终把自己磨练成了一个滥情的人。别人是人见人爱,我是见人爱人.......
2006-05-05 19:43
快速回复:[讨论]for 和while语句哪个运行时间短?
数据加载中...
 
   



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

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