溫馨提示×

如何使用timeval進行高精度時間測量

c++
小樊
84
2024-08-11 10:34:36
欄目: 編程語言

在C語言中,可以使用timeval結(jié)構(gòu)體來進行高精度時間測量。timeval結(jié)構(gòu)體定義如下:

struct timeval {
    time_t      tv_sec;     // seconds
    suseconds_t tv_usec;    // microseconds
};

下面是一個示例代碼,演示如何使用timeval結(jié)構(gòu)體進行高精度時間測量:

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

int main() {
    struct timeval start, end;
    long mtime, seconds, useconds;

    // 獲取起始時間
    gettimeofday(&start, NULL);

    // 執(zhí)行一些操作,比如循環(huán)計算一個大數(shù)
    int sum = 0;
    for (int i = 0; i < 1000000; i++) {
        sum += i;
    }

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

    // 計算時間差
    seconds = end.tv_sec - start.tv_sec;
    useconds = end.tv_usec - start.tv_usec;
    mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;

    printf("Elapsed time: %ld milliseconds\n", mtime);

    return 0;
}

在上面的示例代碼中,首先使用gettimeofday函數(shù)獲取起始時間和結(jié)束時間,并計算時間差。最后打印出經(jīng)過的時間,以毫秒為單位。這樣就可以精確地測量程序執(zhí)行的時間。

0