Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erreicht man in C unter Linux ohne externe Bibliotheken ein millisekundengenaues Timing?

Wie erreicht man in C unter Linux ohne externe Bibliotheken ein millisekundengenaues Timing?

DDD
DDDOriginal
2024-11-15 17:47:03770Durchsuche

How to Achieve Milliseconds-Precise Timing in C   on Linux Without External Libraries?

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:

  1. Erforderliche Header einschließen:

    #include <sys/time.h>
    #include <stdio.h>
    #include <unistd.h>
  2. Definieren Sie einen Strukturzeitwert zum Speichern der Sekunden und Mikrosekunden:

    struct timeval start, end;
  3. Legen Sie den Anfang Zeit:

    gettimeofday(&start, NULL);
  4. Geben Sie mit usleep() eine Verzögerung in Mikrosekunden an (ersetzen Sie sie durch die gewünschte Verzögerung):

    usleep(2000);
  5. Get die Endzeit:

    gettimeofday(&end, NULL);
  6. 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;
  7. 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!

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