1.微秒级 (unix):
timeval结构体
timeval结构体定义在time.h中:
struct timeval
{
__time_t tv_sec; /* Seconds. */
__suseconds_t tv_usec; /* Microseconds. */
};
注:
(1)tv_sec为从1970-1-1零点零分到创建struct timeval时的秒数,tv_usec为微秒数。
(2)tv_usec从1970-1-1 0:0:0 零微秒至当前的时间差tv_sec秒后面的零头.获取一个操作或子程序的运行毫秒或微秒级时长,也应考虑两个时间点的秒差.
范例:
获取时间函数:gettimeofday(struct timeval *__restrict __tv, __timezone_ptr_t __tz) __THROW __nonnull ((1)):
功能是得到当前时间和时区,分别写到tv和tz中,如果tz为NULL则不向tz写入。
#include <sys/time.h> //unix下的库文件
#include <stdio.h>
#include <time.h>
int main()
{
struct timeval start, end;
long dif_sec, dif_usec;
gettimeofday(&start, NULL);
gettimeofday(&end, NULL);
dif_sec = end.tv_sec - start.tv_sec;
dif_usec = end.tv_usec - start.tv_usec;
long last_time = dif_sec*1000000 + dif_usec);
sysetem("pause");
}
2.毫秒级 (windows)
clock_t结构体
clock_t是长整数类型,定义为typedef long clock_t;
头文件 <time.h>
范例:
获取时间函数:clock();表示占用CPU的时钟单元
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
double duration;
clock_t start, finish;
start = clock();
finish = clock();
duration = (double)(finish - start)
printf( "%f msec\n", duration );
system("pause");
}
若要秒级:duration = (finish - start) / CLOCKS_PER_SEC;//CLOCKS_PER_SEC为1000
3.秒级 (windows)
time_t结构体
time_t是长整数类型,定义为typedef long time_t;
头文件 <time.h>
范例:
获取时间函数:time();表示正常意义的秒数
注:返回值是自1970-1-1零点到函数调用经过多少秒.
#include <stdio.h>
#include <time.h>
int main()
{
time_t timer;
timer = time(NULL);
printf("时间%d\n",timer);
system("pause");
}