Heim > Backend-Entwicklung > C++ > Warum gibt „time()' manchmal vor und nach einer kurzen Aufgabe denselben Wert zurück?

Warum gibt „time()' manchmal vor und nach einer kurzen Aufgabe denselben Wert zurück?

Susan Sarandon
Freigeben: 2025-01-03 15:07:40
Original
252 Leute haben es durchsucht

Why Does `time()` Sometimes Return the Same Value Before and After a Short Task?

Verstrichene Zeit einfach messen

Frage:

Beim Messen der verstrichenen Zeit in einem Programm mit time(), warum könnten die Vorher- und Nachher-Werte so bleiben? gleich?

Erklärung:

time() gibt die aktuelle Zeit in Sekunden seit der Epoche zurück. Wenn die zu messende Zeitspanne kurz ist, ist der Unterschied zwischen den Vorher- und Nachher-Werten möglicherweise zu gering, um erkannt zu werden.

Lösung:

Um kurz genau zu messen Zeitspannen, erwägen Sie die Verwendung alternativer Methoden:

C Structured Time Messung:

struct timeval startTV, endTV;
gettimeofday(&startTV, NULL); 
// Execute time-consuming tasks
gettimeofday(&endTV, NULL); 

timersub(&endTV, &startTV, &diff);
printf("**time taken = %ld %ld\n", diff.tv_sec, diff.tv_usec);
Nach dem Login kopieren
  • Zeitwertstruktur stellt einen Zeitwert mit einer Genauigkeit von bis zu Mikrosekunden dar.
  • gettimeofday() ermittelt die aktuelle Tageszeit.
  • timersub() berechnet die Differenz zwischen zwei Zeitstrukturen.
  • Das Ergebnis wird in Sekunden angegeben (diff.tv_sec) und Mikrosekunden (diff.tv_usec).

C 11 Style Precision Time Measurement:

#include <chrono>

std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
// Execute time-consuming tasks
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();

std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::microseconds>(end - begin).count() << "[µs]" << std::endl;
std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin).count() << "[ns]" << std::endl;
Nach dem Login kopieren
  • std::chrono Library bietet hoch Präzisionszeitmessung.
  • std::chrono::steady_clock misst die Zeit seit einem unbekannten beliebigen Zeitpunkt Zeit.
  • Der Zeitunterschied wird als std::chrono::duration-Objekt berechnet, das in Mikrosekunden oder Nanosekunden umgewandelt werden kann.

Das obige ist der detaillierte Inhalt vonWarum gibt „time()' manchmal vor und nach einer kurzen Aufgabe denselben Wert zurück?. 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