• 精确获取函数运行时间,精确到微秒


    Linux或者VxWorks下面精确获取函数运行的时间:

    uint64 start_time;    /* 起始时间 */

    uint64 end_time;    /* 结束时间 */ 

    struct timespec ltv;
    (void)clock_gettime(CLOCK_REALTIME, &ltv);
    start_time = (uint64)ltv.tv_sec * 1000 * 1000 + (uint64)ltv.tv_nsec / 1000; /* (us) */

    /* 待测函数 */

    (void)clock_gettime(CLOCK_REALTIME, &ltv);
    end_time = (uint64)ltv.tv_sec * 1000 * 1000 + (uint64)ltv.tv_nsec / 1000; /* (us) */

    总结:

    Linux系统中获取时间,精确到秒级以下的有两个,一个是timespec,一个是timeval。两者的具体定义和差别可以参考如下。

    一,struct timespec

    系统中该结构体定义如下,

    typedef long time_t;

    #ifndef _TIMESPEC

    #define _TIMESPEC

    struct timespec{

        time_t tv_sec;    /* seconds 秒 */

        long tv_nsec;    /* nanoseconds 纳秒 */

    };

    #endif

    struct timespec有两个成员,一个是秒,一个是纳秒,所以最高精确度是纳秒。

    一般由函数int clock_gettime(clockid_t, struct timespec *)获取特定时钟的时间,常用如下4种时钟:

    CLOCK_REALTIME             系统当前时间,从1970年1.1日算起

    CLOCK_MONOTONIC            系统的启动时间,不能被设置

    CLOCK_PROCESS_CPUTIME_ID   本进程运行时间

    CLOCK_THREAD_CPUTIME_ID    本线程运行时间

    二,struct timeval

    struct timeval{

    time_t tv_sec;    /* seconds 秒 */

    long tv_usec;    /* microseconds 微秒 */

    };

    struct timezone{

    int tz_minuteswest;   /* minutes west of Greenwich */

    int tz_dsttime;       /* type of DST correction */

    };

    struct timeval 有两个成员,一个是秒,一个是微秒,所以最高精确度是微秒。

    一般由函数int gettimeofday(struct timeval *tv, struct timezone *tz)获取系统时间。

  • 相关阅读:
    步骤条 CSS样式
    CSS 常用样式集合(更新中。。。)
    jQuery对checkbox的各种操作
    bootstrap 模态框的动态复用
    js 跳转链接的几种方式
    TP5.0 关于validate验证器add和edit验证规则不统一的复杂情形
    Navicat Premium (Windows) 15破解版 安装步骤
    利用jquery和ajax实现省市区的三级联动
    常用的SAP标准函数
    SAP 录屏BDC使用—实例
  • 原文地址:https://www.cnblogs.com/houpeiyong/p/5888387.html
Copyright © 2020-2023  润新知