C: So erhalten Sie Millisekunden unter Linux ohne Clock()-Einschränkungen
Im Gegensatz zu Windows, wo clock() Millisekunden zurückgibt, rundet die Linux-Implementierung die Ergebnis auf die nächsten 1000 genau, was nur zu einer Genauigkeit der zweiten Ebene führt. Die Notwendigkeit eines Timings auf Millisekundenebene wirft die Frage auf: Gibt es eine Standard-C-Lösung ohne Verwendung von Bibliotheken von Drittanbietern?
Die Antwort: gettimeofday()
Die Antwort liegt in der Standard-POSIX-Funktion gettimeofday(). Diese Funktion stellt hochpräzise Zeitinformationen bereit, indem sie eine Zeitstruktur mit der aktuellen Zeit füllt. Hier ist ein C-Beispiel mit gettimeofday():
#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; }
Dieser Code zeigt, wie die verstrichene Zeit in Millisekunden berechnet wird, indem die aus gettimeofday() erhaltenen Sekunden- und Mikrosekundenkomponenten kombiniert werden. Beachten Sie, dass die Addition 0,5 angewendet wird, um das Ergebnis auf die nächste ganze Zahl zu runden.
Das obige ist der detaillierte Inhalt vonWie erreicht man in C unter Linux ein millisekundengenaues Timing, ohne auf clock() angewiesen zu sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!