我需要在Linux(和其他类Unix系统)上的C ++中测量长计算所花费的CPU(而不是挂钟),所以我使用的是clock()。问题:在32位系统上,这在大约2000或4000秒之后就会消失。
建议的解决方法是什么?
答案 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?