| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1619 人关注过本帖
标题:[求助]如何能准确求循环运行的时间(单位为秒)?
只看楼主 加入收藏
下雨浇花
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-9-19
结帖率:100%
收藏
 问题点数:0 回复次数:16 
[求助]如何能准确求循环运行的时间(单位为秒)?

# include<stdio.h>
# include<stdlib.h>
# include<time.h>
# define CLOCKS_PER_SEC 18.2
int main(){
int x,N;
int Num[100];
float starttime,endtime,gettime;
srand((unsigned)time(NULL));

start:

printf("\nHOW MANY DATA?\n");
scanf("%d",&N);

starttime = clock();
for(x=1;x<N;x++) {
int i=x;
Num[i]=rand();
printf("%d ",Num[i]);
}
endtime = clock();
gettime = (endtime-starttime)/CLOCKS_PER_SEC;
printf("\ntotal time :%f",gettime);
printf("\ntotal number is: %d\n",x);
goto start;
/*return 0;*/
}

为什么我得到的时间是随机的,循环相同的次数,
每次的时间都是不一样的

搜索更多相关主题的帖子: 单位 运行 时间 
2007-09-19 22:23
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
LZ可以参考下面的一程序:
#include<stdio.h>
#include<conio.h>
#include<time.h>
int main(void)
{
clock_t startTime=clock();
clock_t endTime;
clrscr();
getch();
endTime=clock();
printf("%lf",(endTime-startTime)/CLK_TCK);
getch();
}
计算从第一个clock()到第二个clock()之间的时间间隔.(单位:秒)

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-09-20 12:08
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 

我想麻烦一下楼上换掉你的TC
其它:回楼主,可以精确到毫秒,实际精度是0.015s或者15ms
clock()的两次返回值直接相减就是以ms(毫秒)为单位
并且,得到的时间肯定有误差,即使在单任务环境下


by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/

[此贴子已经被作者于2007-9-20 12:13:48编辑过]

2007-09-20 12:11
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用下雨浇花在2007-9-19 22:23:29的发言:

# include<stdio.h>
# include<stdlib.h>
# include<time.h>
# define CLOCKS_PER_SEC 18.2
int main(){
int x,N;
int Num[100];
float starttime,endtime,gettime;
srand((unsigned)time(NULL));

start:

printf("\nHOW MANY DATA?\n");
scanf("%d",&N);

starttime = clock();
for(x=1;x<N;x++) {
int i=x;
Num[i]=rand();
printf("%d ",Num[i]);
}
endtime = clock();
gettime = (endtime-starttime)/CLOCKS_PER_SEC;
printf("\ntotal time :%f",gettime);
printf("\ntotal number is: %d\n",x);
goto start;
/*return 0;*/
}

为什么我得到的时间是随机的,循环相同的次数,
每次的时间都是不一样的

因为你的测试环境windows是多任务系统,请在单任务系统测试。


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-09-20 12:11
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用雨中飞燕在2007-9-20 12:11:31的发言:

我想麻烦一下楼上换掉你的TC
其它:回楼主,可以精确到毫秒,实际精度是0.015s或者15ms
clock()的两次返回值直接相减就是以ms(毫秒)为单位

有时候不发言比发言更好


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-09-20 12:12
下雨浇花
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-9-19
收藏
得分:0 
还是搞不懂,

花不浇,长不大;雨不下,不浇花...
2007-09-20 15:20
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

也就是说,CPU在执行你的程序途中,将你的程式挂起,又去做了其它事(执行其它程式,如,你测试时打开了网络连接,这时在执行你的程式到一半时,CPU需要去处理网络数据),这样,由于做其它事的时间是不确定的,但都会加到你的计时中,造成最后的结果不确定


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-09-20 15:38
下雨浇花
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-9-19
收藏
得分:0 

上面说的我明白,
但是
有时测出来的时间是负数,
有时测出来的时间为0.000000,即使循环次数为600甚至1000
这又是什么原因呢?


花不浇,长不大;雨不下,不浇花...
2007-09-20 17:35
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
我正在学操作系统,和老师的意思差不多

You have lots more to work on! Never give up!c language!
2007-09-20 17:36
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
以下是引用Knocker在2007-9-20 15:38:23的发言:

也就是说,CPU在执行你的程序途中,将你的程式挂起,又去做了其它事(执行其它程式,如,你测试时打开了网络连接,这时在执行你的程式到一半时,CPU需要去处理网络数据),这样,由于做其它事的时间是不确定的,但都会加到你的计时中,造成最后的结果不确定

即使是单任务一样有误差



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/

2007-09-20 18:03
快速回复:[求助]如何能准确求循环运行的时间(单位为秒)?
数据加载中...
 
   



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

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