C++关于time函数的问题

zzh5682 2010-11-20 05:05:55
今天写程序时,想计算下程序运行的时间,上网找了下,说用time()这个函数,于是我就按着写了,可是结果不是我想要的,又改成了clock(),结果还是一样,不知道怎么回事,谁能指点一下,谢谢~
代码如下:

clock_t start;
clock_t end;
start = clock();
srand((unsigned) time(0));
for(int i = 0; i != 10; i++)
{
cout<<rand()%10<<endl;
}
end = clock();
cout<<end-start<<"seconds"<<endl;


结果:
8
3
4
2
2
0
9
9
0
0seconds
为什么start的值和end的值一样?其实就是clock()和time()的值在程序运行中没有变,换了个编译器结果也没变,疑惑中。
p.s:按着double输出结果也一样
...全文
183 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
無_1024 2010-11-20
  • 打赏
  • 举报
回复
准确的说是因为你的程序的时间太短 你所选取的进去不能准确计算 如果你运行一个很大的循环程序就会发现是不一样的 一般用double 把那个书除以 1000得到ms
它是以CPU的主频来计算的
無_1024 2010-11-20
  • 打赏
  • 举报
回复
准确的说是因为你的程序的时间太短 你所选取的进去不能准确计算 如果你运行一个很大的循环程序就会发现是不一样的 一般用double 把那个书除以 1000得到ms
它是以CPU的主频来计算的
zzh5682 2010-11-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pwzh198301 的回复:]
精确度的问题,把你的循环次数放大很多就可以看到结果了,,

谢谢!
[/Quote]

我知道放大可以,但是不放大就没办法统计了吗?
pwzh198301 2010-11-20
  • 打赏
  • 举报
回复
精确度的问题,把你的循环次数放大很多就可以看到结果了,,

谢谢!
zzh5682 2010-11-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gules 的回复:]
精确度的问题,把你的循环次数放大很多就可以看到结果了。
[/Quote]
那对于短运行时间就没有办法计算了吗?怎样提高精确度?
某某9 2010-11-20
  • 打赏
  • 举报
回复
除以CLOCKS_PER_SEC才可以
这个数是100万
gules 2010-11-20
  • 打赏
  • 举报
回复
精确度的问题,把你的循环次数放大很多就可以看到结果了。
peng_weida 2010-11-20
  • 打赏
  • 举报
回复
#include <ctime>

//计算时间
clock_t start,finish;
start = clock();

////////////
//测试的代码
////////////

double total_time;
finish = clock();
total_time = (double)(finish - start) / CLOCKS_PER_SEC;
cout<<"The total time is :"<<total_time<<endl;

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧