C中统计耗时
在C语言中可以使用函数gettimeofday()函数来得到时间。它的精度可以达到微妙。 首先看一下man手册中的描述:
$ man gettimeofday
DESCRIPTION
The functions gettimeofday() and settimeofday() can get and set the time as well as a timezone.
The tv argument is a struct timeval (as specified in <sys/time.h>):
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
意思就是该函数返回的timeval类型的时间值,tv_sec是秒,tv_usec代表的是微秒。
举例
#include <stdio.h>
#include "api.h"
#include <time.h>
#include <sys/time.h>
int main(int argc, char * argv[])
{
struct timeval tpstart,tpend;
gettimeofday(&tpstart,NULL);
seek("/sdcard/Music/mm.mp3", 0, 3600);
gettimeofday(&tpend,NULL);
printf("Used Time:%f\n",tpend.tv_usec - tpstart.tv_usec);
return 0;
}
本例子是调试一个我自定义的seek函数,你也可以替换成自己想要调试的函数,定义了两个timeval的变量tpstart,tpend,分别记录函数起始和函数结束时的时间,两者相减,就可以计算出该函数执行的时间消耗。我这里打印的是tv_usec(微秒),你也可以根据自己需求打印tv_sec。
说明:
在使用gettimeofday()函数时,第二个参数一般都为空,因为我们一般都只是为了获得当前时间,而不用获得timezone的数值