计算执行时间的c语言函数吗,程序内如何计算一个函数的执行时间?

关于时间的文章,大家可以参考我之前的一篇文章《C语言操作时间函数,实现定时执行某个任务小程序》

0、问题描述

粉丝想计算一个函数的执行时间。

1412ceb914a272027ee5541360f206dc.png

一、问题分析

函数的执行时间的统计在嵌入式系统中会被频繁的用到,知识点很重要。本文从两个方面来讨论类似的问题:

程序内计算一个函数的执行时间计算一个程序的执行时间

二、程序内如何计算一个函数的执行时间?

1. 思路

我们在执行函数前后分别记录下时间戳,然后计算两个时间戳的差值即可。

我们需要借助函数clock_gettime来实现这个功能。看下该函数的定义:

#include <time.h>

int clock_gettime(clockid_t clk_id, struct timespec* tp);

可以根据需要,获取不同要求的精确时间

参数:

clk_id :

检索和设置的clk_id指定的时钟时间。

CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户改成其他,则对应的时间相应改变

CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响

CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间

CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间

tp :

获取的时间戳会存放到该结构体变量中

struct timespec

time_t tv_sec;  秒

long tv_nsec;  纳秒

};

返回值:

成功  0

失败 -1  ,同时errno会被赋值

因为我们希望计算执行某个函数的时间,所以我们第一个参数选择CLOCK_MONOTONIC。

2. 实例1

我们先来实现一个简单的程序:

1 #include <stdio.h>

2 #include <stdlib.h>

3 #include <stdint.h>

4 #include <time.h>

5 #include <sys/time.h>

6 #include <sys/stat.h>

7 #include <sys/types.h>

8 #include <unistd.h>

9 #include <string.h>

10

11 int main()

12 {

13     int rc;

14     struct timespec ts_start, ts_end;

15

16     //start time before call function

17     rc = clock_gettime(CLOCK_MONOTONIC, &ts_start);

18

19     printf("you can call your function here");

20

21     //end time before call function

22     rc = clock_gettime(CLOCK_MONOTONIC, &ts_end);

23

24     printf("CLOCK_MONOTONIC reports %ld.%09ld seconds",

25             ts_end.tv_sec - ts_start.tv_sec, ts_end.tv_nsec - ts_start.tv_nsec);

26 }

19行 我们可以将自己要执行的函数放置在此处。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值