[求助]clock()计时溢出问题

ypl_hust 2010-02-03 05:24:52
要计算一段程序的运行时间,在程序开始处用clock_t begin=clock()记下初始时刻,程序结束后用clock_t finish=clock()记下结束时刻。然后计算如下:

clock_t time_used=finish-begin;
double time_cost=(double)time_used/CLOCKS_PER_SEC;

可是发现time_used和time_cost都是负值,不知道是什么原因?是不是溢出了?该怎么解决呢?
...全文
928 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzx714 2010-02-03
  • 打赏
  • 举报
回复
另外,time.h的函数好像只能精确到秒,所以有些小程序可能会计时的0
ypl_hust 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 steedhorse 的回复:]
clock返加是从进程开始之后所经历的wall-clock时钟,总不至于你的程序在第一次调用clock之前,就已运行了好多天吧。
你把begin和finish这两个变量都打出来看看,分别是多少?
[/Quote]
是我搞错了,确实不是clock溢出,而是另外一个地方的问题,谢谢大家了。。
s446721902 2010-02-03
  • 打赏
  • 举报
回复
clock_t start1, finish1 ;
start1 = clock() ;
int i =10000;
while (i>0)
{
i--;
}
finish1 = clock() ;
clock_t used = (finish1 - start1)/CLOCKS_PER_SEC;
晨星 2010-02-03
  • 打赏
  • 举报
回复
clock返加是从进程开始之后所经历的wall-clock时钟,总不至于你的程序在第一次调用clock之前,就已运行了好多天吧。
你把begin和finish这两个变量都打出来看看,分别是多少?
ypl_hust 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 steedhorse 的回复:]
那不应该啊。
一般在CLOCKS_PER_SEC等于1000的平台上。
10 * 60 * 1000也不过60万,就算clock_t只是32位的,也够了。
[/Quote]
那会不会clock_t begin本身比较大,所以跑一会儿就溢出了?
晨星 2010-02-03
  • 打赏
  • 举报
回复
那不应该啊。
一般在CLOCKS_PER_SEC等于1000的平台上。
10 * 60 * 1000也不过60万,就算clock_t只是32位的,也够了。
ypl_hust 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 steedhorse 的回复:]
不会这么快溢出吧,你的程序大概运行了多久啊?
[/Quote]
运行了十来分钟吧。。
晨星 2010-02-03
  • 打赏
  • 举报
回复
偶连续调用,至少都能得到0呢,也不至于是负数啊。
#include <iostream>
#include <ctime>
using namespace std;

int main() {
clock_t begin = clock();
clock_t finished = clock();
clock_t time_used = finished - begin;
double time_cost = (double)time_used / CLOCKS_PER_SEC;
cout << time_used << endl;
cout << time_cost << endl;
return 0;
}
晨星 2010-02-03
  • 打赏
  • 举报
回复
不会这么快溢出吧,你的程序大概运行了多久啊?

65,199

社区成员

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

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