C中的计时程序

时间:2011-12-07 00:36:30

标签: c timing

我需要在程序内部计算我的C程序(因为我正在计算代码的多个子部分并输出它们的时间)。它必须以(至少)毫秒的精度完成。我的理解是“time.h”函数只适用于第二种。还有另一种方法吗?

2 个答案:

答案 0 :(得分:2)

您可以尝试gettimeofday函数,时间精度为微秒。

答案 1 :(得分:2)

您可以使用clock()中的<time.h>功能:

  

clock()函数返回程序使用的处理器时间的近似值。

您将返回值除以宏CLOCKS_PER_SEC以获得以秒为单位的时间量,如果您想要以毫秒为单位的时间,则可以将该值乘以1000,即:

double get_time_as_ms(void) {
   return ((double)(clock() * 1000) / CLOCKS_PER_SEC);
}

或者更确切地说,有一个开始和结束clock_t,然后计算差异:

double duration_as_ms(clock_t start, clock_t end) {
    return ((double)(end - start) * 1000) / CLOCKS_PER_SEC;

}

clock_t start = clock(); /* start of program */
/* ... */
clock_t end = clock(); /* end of program */
/* ... */
printf("Duration: %fms\m", duration_as_ms(start, end));

编辑:想到我添加,CLOCKS_PER_SEC的常见值为1000000,这意味着clock()返回的值将是十万分之一秒。因此,它精确到千分之一毫秒(微秒)。