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

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

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

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

[復(fù)制鏈接]

317

主題

317

帖子

3149

積分

四級(jí)會(huì)員

Rank: 4

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




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

一口Linux

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

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

本版積分規(guī)則


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