zoukankan      html  css  js  c++  java
  • Linux获取毫秒级时间

    在软件设计中经常会用到关于时间的处理,用来计算语句、函数的执行时间,这时就需要精确到毫秒甚至是微妙的时间。

    int gettimeofday(struct timeval *tv, struct timezone *tz);

    int settimeofday(const struct timeval *tv , const struct timezone *tz);

     

    struct timeval {

        time_t      tv_sec;     /* seconds */

        suseconds_t tv_usec;    /* microseconds */

    };

     

    struct timezone {

        int tz_minuteswest;     /* minutes west of Greenwich */

        int tz_dsttime;         /* type of DST correction */

    };

    下面是个简单的例子,用来统计程序的执行时间:

           …

    struct timeval t_start,t_end;

        long cost_time = 0;

    //get start time

    gettimeofday(&t_start, NULL);

    printf("Start time: %ld us", t_start.tv_usec);

    //some operation

    //get end time

    gettimeofday(&t_end, NULL);

    printf("End time: %ld us", t_end.tv_usec);

    //calculate time slot

    cost_time = t_end.tv_usec - t_start.tv_usec;

    printf("Cost time: %ld us", cost_time);

    输出:

    Start time: 438061 us

    End time: 459867 us

    Cost time: 21806 us

    demo:

    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/time.h>
    int main(int argc, char *argv[])
    {
    printf("Hello, world!\n");
    struct timeval tvafter,tvpre;
    struct timezone tz;
    int sum = 0;      
    int i=0;
    gettimeofday (&tvpre , &tz);
    
    for(i = 0; i < 100000000; i++)
    {
         sum += i;
    }      
    gettimeofday (&tvafter , &tz);
    printf("sum=%d 花费时间:%d\n",sum, (tvafter.tv_sec-tvpre.tv_sec)*1000+(tvafter.tv_usec-tvpre.tv_usec)/1000);
    return EXIT_SUCCESS;
    }
  • 相关阅读:
    MySQL之数据库结构优化
    MySQL之索引
    Spring之单元测试
    Spring之IOC容器加载初始化的方式
    LeetCode之Sort List
    [译]Java 垃圾回收的监控和分析
    [译]Java垃圾回收器的类型
    [译]Java垃圾回收是如何工作的
    [译]Java 垃圾回收介绍
    JSP之项目路径问题(${pageContext.request.contextPath},<%=request.getContextPath()%>以及绝对路径获取)
  • 原文地址:https://www.cnblogs.com/qq78292959/p/2513376.html
Copyright © 2011-2022 走看看