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; }
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!