Heim >Backend-Entwicklung >C++ >Wie erreicht man in C unter Linux ein millisekundengenaues Timing, ohne auf clock() angewiesen zu sein?

Wie erreicht man in C unter Linux ein millisekundengenaues Timing, ohne auf clock() angewiesen zu sein?

Barbara Streisand
Barbara StreisandOriginal
2024-11-13 12:15:02402Durchsuche

 How to Achieve Millisecond Precision Timing in C   on Linux Without Relying on clock()?

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!

Stellungnahme:
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