首頁  >  文章  >  後端開發  >  如何在Linux中實現毫秒精度的時間測量?

如何在Linux中實現毫秒精度的時間測量?

DDD
DDD原創
2024-11-13 10:58:02848瀏覽

How to Achieve Millisecond Precision Time Measurement in Linux?

Obtaining Millisecond Precision Time Measurement in Linux

When working with time measurements in C++, the clock() function provides a convenient method to retrieve the current time in milliseconds on Windows systems. However, on Linux, clock() may provide less precise results, rounding the time to the nearest second.

In this case, the solution is to utilize the standard sys/time.h header and functions. The gettimeofday() function returns the current time of day as a timeval struct, which contains both seconds and microseconds since the Epoch. By subtracting the start time from the end time and converting the microseconds into milliseconds, we can obtain millisecond precision time measurements.

Here's an example code snippet that demonstrates how to use gettimeofday() to achieve millisecond precision time measurement:

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

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

    gettimeofday(&start, NULL);
    usleep(2000); // Sleep for 2 milliseconds
    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;
}

In this example, gettimeofday() is used to retrieve both the start and end times. The difference between the seconds and microseconds is calculated, and the result is converted into milliseconds with a precision up to 0.5 milliseconds.

以上是如何在Linux中實現毫秒精度的時間測量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn