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);
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;
Verstehen der Ergebnisse
Die Ausgabe von gettimeofday() und std::chrono gibt einen Zeitunterschied in Sekunden und Mikrosekunden zurück/ Nanosekunden. Zum Beispiel:
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!