Millisekunden-präzises Timing in C unter Linux
Ursprünglich gefragt, warum clock() unter Windows die Zeit in Millisekunden zurückgibt, unter Linux jedoch nur Sekunden , sucht der Fragesteller nach einer Lösung, um eine Zeitgenauigkeit im Millisekundenbereich zu erreichen, ohne auf Bibliotheken von Drittanbietern wie Boost oder angewiesen zu sein Qt.
Lösung mit gettimeofday()
Die Lösung liegt in der Nutzung der Funktion gettimeofday(), die in der Standard-C-Bibliothek vorhanden ist. So implementieren Sie es:
Erforderliche Header einschließen:
#include <sys/time.h> #include <stdio.h> #include <unistd.h>
Definieren Sie einen Strukturzeitwert zum Speichern der Sekunden und Mikrosekunden:
struct timeval start, end;
Legen Sie den Anfang Zeit:
gettimeofday(&start, NULL);
Geben Sie mit usleep() eine Verzögerung in Mikrosekunden an (ersetzen Sie sie durch die gewünschte Verzögerung):
usleep(2000);
Get die Endzeit:
gettimeofday(&end, NULL);
Berechnen Sie die verstrichene Zeit Zeit:
long mtime, seconds, useconds; seconds = end.tv_sec - start.tv_sec; useconds = end.tv_usec - start.tv_usec; mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;
Drucken Sie die verstrichene Zeit in Millisekunden aus:
printf("Elapsed time: %ld milliseconds\n", mtime);
Dieses Codefragment verwendet gettimeofday(), um die Zeit zu erhalten in Mikrosekunden, was eine Präzision im Millisekundenbereich gewährleistet. Es dient als robuste Standardlösung zur Erfassung genauer Zeitmessungen in C unter Linux.
Das obige ist der detaillierte Inhalt vonWie erreicht man in C unter Linux ohne externe Bibliotheken ein millisekundengenaues Timing?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!