我需要在程序内部对我的C程序进行计时(因为我正在计时代码的多个子段并输出它们的时间)。它必须以(至少)毫秒的精度完成。我的理解是"time.h“函数只适用于第二个函数。有没有其他方法可以做到这一点?
发布于 2011-12-07 08:58:29
您可以使用<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));EDIT:刚才还想说,CLOCKS_PER_SEC的一个常见值是1000000,这意味着clock()返回的值应该是十万分之一秒。因此,它的精确度为千分之一毫秒(微秒)。
发布于 2011-12-07 08:41:11
您可以尝试使用gettimeofday函数,时间精度为微秒。
https://stackoverflow.com/questions/8408946
复制相似问题