Heim > Backend-Entwicklung > C++ > Hauptteil

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

DDD
Freigeben: 2024-11-15 17:47:03
Original
769 Leute haben es durchsucht

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>
    Nach dem Login kopieren
  2. Definieren Sie einen Strukturzeitwert zum Speichern der Sekunden und Mikrosekunden:

    struct timeval start, end;
    Nach dem Login kopieren
  3. Legen Sie den Anfang Zeit:

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

    usleep(2000);
    Nach dem Login kopieren
  5. Get die Endzeit:

    gettimeofday(&end, NULL);
    Nach dem Login kopieren
  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;
    Nach dem Login kopieren
  7. Drucken Sie die verstrichene Zeit in Millisekunden aus:

    printf("Elapsed time: %ld milliseconds\n", mtime);
    Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage