当前位置: 智能网 > 人工智能 > 程序内如何计算一个函数的执行时间?

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

放大字体 缩小字体 发布日期:2021-02-25 06:02:56   浏览次数:113
核心提示:2021年02月25日关于程序内如何计算一个函数的执行时间?的最新消息:关于时间的文章,大家可以参考我之前的一篇文章《C语言操作时间函数,实现定时执行某个任务小程序》0、问题描述粉丝想计算一个函数的执行时间。一、问题分析函数的执行时间的统计在嵌入式系统


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

0、问题描述

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

一、问题分析

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

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

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

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行 我们可以将自己要执行的函数放置在此处。

 

[ 智能网搜索 ]  [ 打印本文 ]  [ 违规举报

猜你喜欢

 
推荐图文
ITECH直流电源在人工智能领域的应用 基于朴素贝叶斯自动过滤垃圾广告
2020年是人工智能相关业务发展的重要一年 我国人工智能市场规模、行业短板、发展前景一览
推荐智能网
点击排行

 
 
新能源网 | 锂电网 | 智能网 | 环保设备网 | 联系方式