Linux下C语言编程——时间表示

1.时间表示
头文件:#include<time.h>


函数:
time_t time(time_t *tloc);
char *ctime(const time_t *clock);

time函数返回1970.1.1 0:0:0以来的秒数,存储在time_t结构中,不过这个函数值对我们来说没实际意义。

第二个函数返回值类型固定,一个可能值为 Thu Dec 7 14:58:59 2000这个字符串固定长度26

2.时间测量
(比如对算法进行时间分析,可以使用下面这个函数)

#include<sys/time.h>

int gertimeofday(struct timeval *tv,struct timezone *tz);//将时间保存在结构tv中,tz一般用null代替

struct timeval
{
	long tv_sec;/*秒数*/
	long tv_usec;/*微秒数*/
};
#include<sys/time.h>
#include<stdio.h>
#include<math.h>
void function()
{
	unsigned int i,j;
	double y;
	for(i = 0;i < 1000;i++)
	for(j = 0;j < 1000;j++)
	y = sin((double)i)
}
main()
{
	struct timeval tpstart,tpend;
	float timeuse;
	gettimeofday(&tpstart,NULL);
	function();
	gettimeofday(&tpend,NULL);
	timeuse = 1000000 * (tpend.tv_sec - tpstart.tv_sec) + tpend.tv_usec - tpstart.tv_usec;
	timeuse /= 1000000;
	printf("Used Time: %f\n",timeuse);
	exit(0);
}

3.计时器的使用
Linux提供了3个内部间隔计时器
ITIMER_REAL:减少实际时间,到时的时候发出SIGALRM信号
ITIMER_VIRTUAL:减少有效时间(进程执行的时间).产生SIGVTALRM信号
ITIMER_PROF:减少进程的有效时间和系统时间(为进程调度用的时间).这个经常和上面一个使用来计算系统内核时间和用户时间,产生SIGPROF信号


具体使用函数:
#include <sys/time.h>;
int getitimer(int which,struct itimerval *value);//得到建个计时器的时间值,保存在value中
int setitimer(int which,struct itimerval *newval,struct itimerval *oldval);//设置间隔计时器的时间值为newval,并将旧值保存在oldval中,which表示使用三个计时器中的那一个,itimerval结构中的it_value是减少的时间,当这个值为0的时候就发出相应的信号,然后设置为it_interval值。

struct itimerval {
	struct timeval it_interval;
	struct timeval it_value;
}


猜你喜欢

转载自blog.csdn.net/deng529828/article/details/7600701
今日推荐