32位Linux时钟()溢出

时间:2009-03-08 18:17:51

标签: c++ linux time clock

我需要在Linux(和其他类Unix系统)上的C ++中测量长计算所花费的CPU(而不是挂钟),所以我使用的是clock()。问题:在32位系统上,这在大约2000或4000秒之后就会消失。

建议的解决方法是什么?

4 个答案:

答案 0 :(得分:12)

您想使用填充以下结构的getrusage

struct rusage {
    struct timeval ru_utime; /* user time used */
    struct timeval ru_stime; /* system time used */
    ...
};

完成后,struct timeval

struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};

与往常一样,请参阅联机帮助页了解详细信息(man getrusage

答案 1 :(得分:1)

您需要clock()提供的精确度吗?如果没有,您可以使用time()两次并取消差异:

time_t start, end;
double diff;

time(&start);
// Do your stuff...
time(&end);
diff = difftime(end, start);

编辑: time()测量他的评论中指出的实时(不是CPU时间),但clock()也是如此。如果要测量CPU时间,则应遵循litb的建议并使用getrusage()

答案 2 :(得分:1)

另一种可能的方法是使用gettimeofday()两次,因为它返回ms精度。

答案 3 :(得分:-1)

定期获取时间并在每次翻转时增加乘数变量int?