题
我需要在Linux(以及其他类Unix系统)上的C ++中测量长计算所花费的CPU(而不是挂钟),所以我使用的是clock()。问题:在32位系统上,这在大约2000或4000秒之后就会消失。
建议的解决方法是什么?
解决方案
您想使用 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
)
其他提示
您需要 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()
。
另一种可能的方法是使用gettimeofday()两次,因为它返回ms精度。
定期获取时间并在每次翻转时增加乘数变量int?
不隶属于 StackOverflow