我需要在程序内部计算我的C程序(因为我正在计算代码的多个子部分并输出它们的时间)。它必须以(至少)毫秒的精度完成。我的理解是“time.h”函数只适用于第二种。还有另一种方法吗?
答案 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()
返回的值将是十万分之一秒。因此,它精确到千分之一毫秒(微秒)。