# 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;*/
}
为什么我得到的时间是随机的,循环相同的次数,
每次的时间都是不一样的
----------------解决方案--------------------------------------------------------
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()之间的时间间隔.(单位:秒)
----------------解决方案--------------------------------------------------------
我想麻烦一下楼上换掉你的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编辑过]
----------------解决方案--------------------------------------------------------
# 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是多任务系统,请在单任务系统测试。
----------------解决方案--------------------------------------------------------
我想麻烦一下楼上换掉你的TC
其它:回楼主,可以精确到毫秒,实际精度是0.015s或者15ms
clock()的两次返回值直接相减就是以ms(毫秒)为单位
有时候不发言比发言更好
----------------解决方案--------------------------------------------------------
还是搞不懂,
----------------解决方案--------------------------------------------------------
也就是说,CPU在执行你的程序途中,将你的程式挂起,又去做了其它事(执行其它程式,如,你测试时打开了网络连接,这时在执行你的程式到一半时,CPU需要去处理网络数据),这样,由于做其它事的时间是不确定的,但都会加到你的计时中,造成最后的结果不确定
----------------解决方案--------------------------------------------------------
上面说的我明白,
但是
有时测出来的时间是负数,
有时测出来的时间为0.000000,即使循环次数为600甚至1000
这又是什么原因呢?
----------------解决方案--------------------------------------------------------
我正在学操作系统,和老师的意思差不多
----------------解决方案--------------------------------------------------------
也就是说,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/
----------------解决方案--------------------------------------------------------