【发布时间】:2012-05-01 03:10:51
【问题描述】:
我正在尝试使用以下代码测量 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 毫秒的时间 知道这里出了什么问题。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
您没有检查
clock_gettime(3)调用是否有错误返回;检查返回值,如果返回错误,使用perror(3)输出错误信息。 -
clock_gettime不应该在给定有效参数时返回错误。 -
@R..:并非所有时钟都适用于所有平台; user958263 没有显示
sysconf(3)代码来验证他正在使用的时钟在他的平台上是否可用,所以我很好奇它是否因为不支持而失败。