|
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;
- }
复制代码 |
|