Heim > Backend-Entwicklung > C++ > Wie kann ich die verstrichene Zeit in C und C genau messen?

Wie kann ich die verstrichene Zeit in C und C genau messen?

Patricia Arquette
Freigeben: 2024-12-22 20:10:12
Original
759 Leute haben es durchsucht

How Can I Accurately Measure Elapsed Time in C and C  ?

Effiziente Messung der verstrichenen Zeit in C und C

Die genaue Messung der verstrichenen Zeit ist für die Leistungsanalyse in der Programmierung von entscheidender Bedeutung. Allerdings kann die Standard-C-Funktion time() für Aufgaben von kurzer Dauer unzuverlässig sein.

Verwendung von gettimeofday() in C

Um dieses Problem zu beheben, können C-Programmierer dies tun Verwenden Sie die Funktion gettimeofday(), die die aktuelle Uhrzeit mit Mikrosekundengenauigkeit zurückgibt. Hier ist ein Beispiel:

#include <sys/time.h>

struct timeval startTV, endTV;

gettimeofday(&startTV, NULL); // Start time

// Perform long-running tasks

gettimeofday(&endTV, NULL); // End time

time_t diffSeconds = endTV.tv_sec - startTV.tv_sec;
long diffMicroseconds = endTV.tv_usec - startTV.tv_usec;

printf("Time taken: %ld seconds, %ld microseconds\n", diffSeconds, diffMicroseconds);
Nach dem Login kopieren

Verwendung von std::chrono in C

In C bietet die std::chrono-Bibliothek eine modernere und tragbarere Lösung zum Messen verstrichene Zeit. Betrachten Sie dieses Beispiel:

#include <chrono>

using namespace std::chrono;

auto begin = steady_clock::now(); // Start time

// Perform long-running tasks

auto end = steady_clock::now(); // End time

duration<double, nano> diff = end - begin;

cout << "Time taken: " << diff.count() << " nanoseconds" << endl;
Nach dem Login kopieren

Verstehen der Ergebnisse

Die Ausgabe von gettimeofday() und std::chrono gibt einen Zeitunterschied in Sekunden und Mikrosekunden zurück/ Nanosekunden. Zum Beispiel:

  • Benötigte Zeit: 4 Sekunden, 25 Mikrosekunden (mit gettimeofday())
  • Benötigte Zeit: 26.339 Mikrosekunden (mit std::chrono)

Im ersten Beispiel beträgt die verstrichene Zeit 4,025 Sekunden, während im zweiten Beispiel es sind 0,026339 Sekunden. Beachten Sie, dass std::chrono standardmäßig Nanosekunden zurückgibt, daher müssen Sie diese bei Bedarf möglicherweise manuell in Mikrosekunden oder Sekunden umrechnen.

Das obige ist der detaillierte Inhalt vonWie kann ich die verstrichene Zeit in C und C genau messen?. 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