程序內(nèi)如何計算一個函數(shù)的執(zhí)行時間?
關(guān)于時間的文章,大家可以參考我之前的一篇文章《C語言操作時間函數(shù),實現(xiàn)定時執(zhí)行某個任務小程序》
0、問題描述
粉絲想計算一個函數(shù)的執(zhí)行時間。
一、問題分析
函數(shù)的執(zhí)行時間的統(tǒng)計在嵌入式系統(tǒng)中會被頻繁的用到,知識點很重要。本文從兩個方面來討論類似的問題:
程序內(nèi)計算一個函數(shù)的執(zhí)行時間計算一個程序的執(zhí)行時間
二、程序內(nèi)如何計算一個函數(shù)的執(zhí)行時間?
1. 思路
我們在執(zhí)行函數(shù)前后分別記錄下時間戳,然后計算兩個時間戳的差值即可。
我們需要借助函數(shù)clock_gettime來實現(xiàn)這個功能?聪略摵瘮(shù)的定義:
#include <time.h>
int clock_gettime(clockid_t clk_id, struct timespec* tp);
可以根據(jù)需要,獲取不同要求的精確時間
參數(shù):
clk_id :
檢索和設(shè)置的clk_id指定的時鐘時間。
CLOCK_REALTIME:系統(tǒng)實時時間,隨系統(tǒng)實時時間改變而改變,即從UTC1970-1-1 0:0:0開始計時,中間時刻如果系統(tǒng)時間被用戶改成其他,則對應的時間相應改變
CLOCK_MONOTONIC:從系統(tǒng)啟動這一刻起開始計時,不受系統(tǒng)時間被用戶改變的影響
CLOCK_PROCESS_CPUTIME_ID:本進程到當前代碼系統(tǒng)CPU花費的時間
CLOCK_THREAD_CPUTIME_ID:本線程到當前代碼系統(tǒng)CPU花費的時間
tp :
獲取的時間戳會存放到該結(jié)構(gòu)體變量中
struct timespec
{
time_t tv_sec; 秒
long tv_nsec; 納秒
};
返回值:
成功 0
失敗 -1 ,同時errno會被賦值
因為我們希望計算執(zhí)行某個函數(shù)的時間,所以我們第一個參數(shù)選擇CLOCK_MONOTONIC。
2. 實例1
我們先來實現(xiàn)一個簡單的程序:
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行 我們可以將自己要執(zhí)行的函數(shù)放置在此處。

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
-
8月5日立即報名>> 【在線會議】CAE優(yōu)化設(shè)計:醫(yī)療器械設(shè)計的應用案例與方案解析
-
8月14日立即報名>> 【在線研討會】解析安森美(onsemi)高精度與超低功耗CGM系統(tǒng)解決方案
-
精彩回顧立即查看>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍皮書》
-
精彩回顧立即查看>> 7月30日- 8月1日 2025全數(shù)會工業(yè)芯片與傳感儀表展
-
精彩回顧立即查看>> 全數(shù)會2025(第六屆)機器人及智能工廠展
-
精彩回顧立即查看>> OFweek 2025 具身機器人動力電池技術(shù)應用大會
推薦專題
- 1 AI產(chǎn)業(yè)的新高度!英偉達成為全球首家市值破4萬億美元的公司
- 2 傳魏建軍與賈躍亭合作,長城汽車出海美國
- 3 一文讀懂:到底什么是 “具身智能” ?
- 4 黃仁勛:與雷軍長期合作,共探AI智駕
- 5 具身智能泡沫爭議下,華映資本尋找「穿越周期者」
- 6 中國平安們欲靠AI守“陣地”
- 7 官宣:智元機器人借殼上市,A股人形機器人第一股!
- 8 華為讓渡“三界”銷售主導權(quán),智界高管:終于能全力奔跑了
- 9 借仿生手實現(xiàn)突圍,國產(chǎn)靈巧手破局“不可能三角”
- 10 DeepSeek R2加持,中國AI與芯片產(chǎn)業(yè)迎來新一輪協(xié)同進化