我正在尝试使用以下代码测量 CPU 时间。
timespec time1, time2, temp_time;
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
int i;
int cpu_sum = 0;
for (i = 0; i < nelements; i++) {
cpu_sum += array[i];
}
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
temp_time.tv_sec = time2.tv_sec - time1.tv_sec;
printf( sum: %d using CPU in %lf ms \n",cpu_sum, temp_time.tv_sec);
但我总是得到 0.000 毫秒的时间 知道这里出了什么问题。
如有任何帮助,我们将不胜感激。
谢谢
最佳答案
您通过将错误的参数类型传递给
printf
(time_t
,可能是long
,而不是double
).tv_sec
只包含时间的整个秒部分。您还需要使用tv_nsec
来获取纳秒部分。
尝试这样的事情:
temp_time.tv_sec = time2.tv_sec - time1.tv_sec;
temp_time.tv_nsec = time2.tv_nsec - time2.tv_nsec;
if (temp_time.tv_nsec < 0) {
temp_time.tv_nsec += 1000000000;
temp_time.tv_sec--;
}
printf("%lld.%.9ld\n", (long long)temp_time.tv_sec, (long)temp_time.tv_nsec);
关于c++ - CPU 时间始终为零 :(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10393093/