Heim > Artikel > Backend-Entwicklung > Wie kann ich unter Linux ohne externe Bibliotheken eine Zeitgenauigkeit im Millisekundenbereich erreichen?
Millisekundenzeit unter Linux ermitteln: Eine Alternative zu clock()
Auf der Suche nach Präzision über die Sekundengrenzen hinaus stoßen wir unter Linux auf eine Einschränkung von clock(), die sich nur der nächsten Sekunde annähert. Während Bibliotheken von Drittanbietern wie Qt Lösungen mit der QTime-Klasse bereitstellen und einen grundlegenderen Ansatz anstreben, erkunden wir den Bereich der Standard-C-Tools.
Um eine Genauigkeit im Millisekundenbereich zu erreichen, sollten Sie die Verwendung der Funktion gettimeofday() aus dem in Betracht ziehen
Betrachten Sie den folgenden Codeausschnitt:
#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); 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 nutzen wir gettimeofday() zur Erfassung die aktuelle Zeit vor und nach einer Verzögerung von 2 Millisekunden mit usleep(). Durch Subtrahieren der Anfangszeit von der Endzeit erhalten wir die verstrichene Zeit in Sekunden und Mikrosekunden. Um dies in Millisekunden umzuwandeln, multiplizieren wir die Sekunden mit 1000 und die Mikrosekunden mit 1000,0 und addieren sie, um mit der 0,5-Anpassung eine gebrochene Genauigkeit sicherzustellen.
Diese Methode bietet eine präzise und standardisierte Lösung zum Erhalten von Millisekunden in C on Linux, wodurch die Abhängigkeit von externen Bibliotheken entfällt und gleichzeitig die Kompatibilität zwischen verschiedenen Plattformen gewahrt bleibt.
Das obige ist der detaillierte Inhalt vonWie kann ich unter Linux ohne externe Bibliotheken eine Zeitgenauigkeit im Millisekundenbereich erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!