Linux C语言 高精度时间函数:gettimeofday() 获取时间差

  1. 简介:
    为了获取某函数调用耗时.在C语言中可以使用函数gettimeofday()函数来得到时间。它的精度可以达到微秒, 且在x86-64平台gettimeofday()已不是系统调用,不会陷入内核, 多次调用不会有性能损失.
  2. 函数原型:
    #include<sys/time.h>
    int gettimeofday(struct timeval*tv,struct timezone *tz )
  3. 说明:
    <1>.gettimeofday()会把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中
    <2>.struct timeval结构体为时间变量, 包括两个成员变量:tv_sec(秒), tv_usec(微秒); 第二个结构体为时区, 本示例没有用到可以置为NULL.

    struct  timeval{
    long  tv_sec;/*秒*/
    long  tv_usec;/*微妙*/
    };
    struct  timezone{
    int tz_minuteswest;/*和Greewich时间差了多少分钟*/
    int tz_dsttime;/*type of DST correction*/
    }
  4. 代码示例:

    struct timeval tvBegin, tvEnd;
    gettimeofday(&tvBegin, NULL);
    //耗时函数执行...
    gettimeofday(&tvEnd, NULL);
    //<1>.获得毫秒数:
    double dDuration = 1000 * (tvEnd.tv_sec - tvBegin.tv_sec) + ((tvEnd.tv_usec - tvBegin.tv_usec) / 1000.0);
    //<2>.获得秒数:
    double dDuration = (tvEnd.tv_sec - tvBegin.tv_sec) + ((tvEnd.tv_usec - tvBegin.tv_usec) / 1000.0) / 1000.0;

    注意: 获得秒数时, 分母需要为 1000.0, 如果是1000, 则返回整数,这样就不精确了.
    原因:
    相同数据类型的数据、变量进行运算,结果保持原有数据类型。
    当不同数据类型的数据、变量进行运算时,结果为精度高的数据类型。
    例如:1/2 的结果为0; 1.0/2 的结果为 0.5
    C语言其它时间函数(Linux&Win)

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值