如何在Linux下使用gettimeofday精確計(jì)時(shí)

小樊
81
2024-09-30 22:41:59

在 Linux 下,可以使用 gettimeofday 函數(shù)來(lái)精確計(jì)時(shí)

下面是一個(gè)簡(jiǎn)單的示例,展示了如何使用 gettimeofday 函數(shù)來(lái)測(cè)量一段代碼的執(zhí)行時(shí)間:

#include <stdio.h>
#include <sys/time.h>

void measure_time(const char *msg) {
    struct timeval start, end;

    // 獲取開(kāi)始時(shí)間
    gettimeofday(&start, NULL);

    // 要測(cè)量的代碼段
    for (int i = 0; i < 1000000; i++) {
        // 這里放你需要計(jì)時(shí)的代碼
    }

    // 獲取結(jié)束時(shí)間
    gettimeofday(&end, NULL);

    // 計(jì)算執(zhí)行時(shí)間并輸出
    long seconds = end.tv_sec - start.tv_sec;
    long microseconds = end.tv_usec - start.tv_usec;
    printf("%s: %ld seconds, %ld microseconds\n", msg, seconds, microseconds);
}

int main() {
    measure_time("Code execution time");
    return 0;
}

在這個(gè)示例中,我們定義了一個(gè)名為 measure_time 的函數(shù),它接受一個(gè)字符串參數(shù) msg,用于輸出提示信息。在函數(shù)內(nèi)部,我們使用 gettimeofday 函數(shù)分別獲取代碼段執(zhí)行前后的時(shí)間,然后計(jì)算差值并輸出結(jié)果。

main 函數(shù)中,我們調(diào)用 measure_time 函數(shù),傳入一個(gè)字符串參數(shù),表示要測(cè)量哪段代碼的執(zhí)行時(shí)間。

需要注意的是,gettimeofday 函數(shù)返回的時(shí)間精度取決于系統(tǒng)硬件和配置。在大多數(shù)現(xiàn)代 Linux 系統(tǒng)上,它的時(shí)間精度可以達(dá)到微秒級(jí)別。如果需要更高精度的時(shí)間測(cè)量,可以考慮使用 clock_gettime 函數(shù),它提供了更高精度的時(shí)間選項(xiàng)。

0