四联光电智能照明论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1985|回复: 0
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    开心
    2018-11-9 08:52
  • 241

    主题

    691

    帖子

    7652

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    7652
    跳转到指定楼层
    楼主
    发表于 2016-11-26 07:38:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    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.时间测量
    (比如对算法进行时间分析,可以使用下面这个函数)

    1. #include<sys/time.h>  
    2.   
    3. int gertimeofday(struct timeval *tv,struct timezone *tz);//将时间保存在结构tv中,tz一般用null代替  
    4.   
    5. struct timeval  
    6. {  
    7.     long tv_sec;/*秒数*/  
    8.     long tv_usec;/*微秒数*/  
    9. };  
    10. #include<sys/time.h>  
    11. #include<stdio.h>  
    12. #include<math.h>  
    13. void function()  
    14. {  
    15.     unsigned int i,j;  
    16.     double y;  
    17.     for(i = 0;i < 1000;i++)  
    18.     for(j = 0;j < 1000;j++)  
    19.     y = sin((double)i)  
    20. }  
    21. main()  
    22. {  
    23.     struct timeval tpstart,tpend;  
    24.     float timeuse;  
    25.     gettimeofday(&tpstart,NULL);  
    26.     function();  
    27.     gettimeofday(&tpend,NULL);  
    28.     timeuse = 1000000 * (tpend.tv_sec - tpstart.tv_sec) + tpend.tv_usec - tpstart.tv_usec;  
    29.     timeuse /= 1000000;  
    30.     printf("Used Time: %f\n",timeuse);  
    31.     exit(0);  
    32. }  
    复制代码


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

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


    1. struct itimerval {  
    2.     struct timeval it_interval;  
    3.     struct timeval it_value;  
    4. }  
    复制代码
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Silian Lighting+ ( 蜀ICP备14004521号-1 )

    GMT+8, 2024-5-16 09:44 , Processed in 1.046875 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表