统计某次操作(函数)耗时时长

本文介绍了如何在C语言中使用gettimeofday()函数来精确测量函数执行的耗时。通过创建timeval结构体变量,记录函数开始和结束的时间戳,然后计算差值,可以获取到微秒级别的执行时间。示例代码展示了一个自定义seek函数的耗时计算,强调了gettimeofday()函数的使用细节和tv_sec、tv_usec字段的含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C中统计耗时

在C语言中可以使用函数gettimeofday()函数来得到时间。它的精度可以达到微妙。 首先看一下man手册中的描述:

$ man gettimeofday

DESCRIPTION
       The functions gettimeofday() and settimeofday() can get and set the time as well as a timezone.
       The tv argument is a struct timeval (as specified in <sys/time.h>):

           struct timeval {
               time_t      tv_sec;     /* seconds */
               suseconds_t tv_usec;    /* microseconds */
           };

  

 意思就是该函数返回的timeval类型的时间值,tv_sec是秒,tv_usec代表的是微秒。

举例

#include <stdio.h>
#include "api.h"
#include <time.h>
#include <sys/time.h>


int main(int argc,  char * argv[])
{
    struct timeval tpstart,tpend;

 
    gettimeofday(&tpstart,NULL);
    seek("/sdcard/Music/mm.mp3", 0, 3600);
    gettimeofday(&tpend,NULL);

    printf("Used Time:%f\n",tpend.tv_usec - tpstart.tv_usec);

    return 0;
}

本例子是调试一个我自定义的seek函数,你也可以替换成自己想要调试的函数,定义了两个timeval的变量tpstart,tpend,分别记录函数起始和函数结束时的时间,两者相减,就可以计算出该函数执行的时间消耗。我这里打印的是tv_usec(微秒),你也可以根据自己需求打印tv_sec。

说明:

在使用gettimeofday()函数时,第二个参数一般都为空,因为我们一般都只是为了获得当前时间,而不用获得timezone的数值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值