我需要在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?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top