電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 127|回復(fù): 0
收起左側(cè)

C語言中計算函數(shù)執(zhí)行時間的小技巧

[復(fù)制鏈接]

317

主題

317

帖子

3149

積分

四級會員

Rank: 4

積分
3149
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-10-30 11:50:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
點擊左上方藍(lán)色“一口Linux”,選擇“設(shè)為星標(biāo)
第一時間看干貨文章
?【干貨】嵌入式驅(qū)動工程師學(xué)習(xí)路線?【干貨】Linux嵌入式知識點-思維導(dǎo)圖-免費獲取?【就業(yè)】一個可以寫到簡歷的基于Linux物聯(lián)網(wǎng)綜合項目?【就業(yè)】找工作簡歷模版




使用 time() 測量秒數(shù)#include
#include
int main() {
    // 獲取操作前的當(dāng)前時間
    time_t start_time = time(NULL);
    // 執(zhí)行一些操作(例如,一個簡單的循環(huán))
    for (long i = 0; i 1000000000; ++i);
    // 獲取操作后的當(dāng)前時間
    time_t end_time = time(NULL);
    // 計算時間差
    double duration = difftime(end_time, start_time);
    // 打印時間差
    printf("花費的時間: %.2f 秒
", duration);
    return 0;
}
花費的時間: 3.00 秒使用 clock() 測量更高精度的時間#include
#include
int main() {
    // 獲取操作前的當(dāng)前時鐘時間
    clock_t start_time = clock();
    // 執(zhí)行一些操作(例如,一個簡單的循環(huán))
    for (long i = 0; i 1000000000; ++i);
    // 獲取操作后的當(dāng)前時鐘時間
    clock_t end_time = clock();
    // 計算時間差
    double duration = (double)(end_time - start_time) / CLOCKS_PER_SEC;
    // 打印時間差
    printf("花費的時間: %.6f 秒
", duration);
    return 0;
}
花費的時間: 2.500000 秒CLOCKS_PER_SEC是標(biāo)準(zhǔn)c的time.h頭函數(shù)中宏定義的一個常數(shù),表示一秒鐘內(nèi)CPU運行的時鐘周期數(shù),用于將clock()函數(shù)的結(jié)果轉(zhuǎn)化為以秒為單位的量,但是這個量的具體值是與操作系統(tǒng)相關(guān)的
使用 gettimeofday() 測量微秒級的時間#include
#include
int main() {
    struct timeval start, end;
    // 獲取操作前的當(dāng)前時間
    gettimeofday(&start, NULL);
    // 執(zhí)行一些操作(例如,一個簡單的循環(huán))
    for (long i = 0; i 1000000000; ++i);
    // 獲取操作后的當(dāng)前時間
    gettimeofday(&end, NULL);
    // 計算時間差
    double duration = (end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec) / 1e6;
    // 打印時間差
    printf("花費的時間: %.6f 秒
", duration);
    return 0;
}
花費的時間: 2.499999 秒
注意事項:time(): 返回的秒數(shù)可能是整數(shù),因此精度較低。
clock(): 提供的時間可能更精確,因為它是基于CPU時間。
gettimeofday(): 提供更高的時間精度,通常可以精確到微秒級。
實際的時間輸出將根據(jù)系統(tǒng)性能和執(zhí)行時間而有所不同。以上輸出只是示例,用于說明代碼的運行結(jié)果。
end

一口Linux

關(guān)注,回復(fù)【1024】海量Linux資料贈送
精彩文章合集
文章推薦
?【專輯】ARM?【專輯】粉絲問答?【專輯】所有原創(chuàng)?【專輯】linux入門?【專輯】計算機(jī)網(wǎng)絡(luò)?【專輯】Linux驅(qū)動?【干貨】嵌入式驅(qū)動工程師學(xué)習(xí)路線?【干貨】Linux嵌入式所有知識點-思維導(dǎo)圖
回復(fù)

使用道具 舉報

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表