Heim > Backend-Entwicklung > C++ > Hauptteil

Wie erreicht man unter Linux eine millisekundengenaue Zeitmessung?

DDD
Freigeben: 2024-11-13 10:58:02
Original
859 Leute haben es durchsucht

How to Achieve Millisecond Precision Time Measurement in Linux?

Erhalten von Millisekunden-Präzisionszeitmessungen unter Linux

Beim Arbeiten mit Zeitmessungen in C bietet die Funktion clock() eine praktische Methode zum Abrufen die aktuelle Zeit in Millisekunden auf Windows-Systemen. Unter Linux liefert clock() jedoch möglicherweise weniger präzise Ergebnisse, da die Zeit auf die nächste Sekunde gerundet wird.

In diesem Fall besteht die Lösung darin, den Standard-Header und die Standardfunktionen von sys/time.h zu verwenden. Die Funktion gettimeofday() gibt die aktuelle Tageszeit als Zeitwertstruktur zurück, die sowohl Sekunden als auch Mikrosekunden seit der Epoche enthält. Indem wir die Startzeit von der Endzeit subtrahieren und die Mikrosekunden in Millisekunden umwandeln, können wir Zeitmessungen mit Millisekundengenauigkeit erhalten.

Hier ist ein Beispielcodeausschnitt, der zeigt, wie man gettimeofday() verwendet, um eine Zeitmessung mit Millisekundengenauigkeit zu erreichen:

#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;
}
Nach dem Login kopieren

In diesem Beispiel wird gettimeofday() verwendet, um sowohl die Start- als auch die Endzeit abzurufen. Die Differenz zwischen Sekunden und Mikrosekunden wird berechnet und das Ergebnis mit einer Genauigkeit von bis zu 0,5 Millisekunden in Millisekunden umgerechnet.

Das obige ist der detaillierte Inhalt vonWie erreicht man unter Linux eine millisekundengenaue Zeitmessung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage