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
Freigeben: 2024-11-13 12:15:02
Original
355 Leute haben es durchsucht

 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;
}
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage