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

Wie kann ich die verstrichene Zeit in C genau messen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-30 15:41:10527Durchsuche

How Can I Accurately Measure Elapsed Time in C  ?

Einfache Messung der verstrichenen Zeit

Um die verstrichene Zeit von Programmsegmenten genau zu messen, stehen Alternativen zur weniger präzisen Funktion time() zur Verfügung.

Verwenden von gettimeofday()

As Wie im bereitgestellten Code gezeigt, bietet gettimeofday() eine Timer-Präzision bis zu Mikrosekunden. Durch Berechnen der Differenz zwischen einer Start- und Endzeitmessung können Sie Werte für die verstrichene Zeit erhalten.

Ergebnisse interpretieren

Zeitwertinterpretation:

  • Zeitaufwand = 0 26339: Entspricht etwa 26.339 Mikrosekunden 26,339 Millisekunden.
  • benötigte Zeit = 4 45025: Stellt 4 Sekunden und 45,025 Millisekunden dar.

C 11 Approach

Ein modernerer und präziserer Ansatz nutzt den C 11 Bibliothek:

  • std::chrono::steady_clock::now(): Ruft die aktuelle Zeit mit Nanosekundengenauigkeit ab.
  • duration_cast : Konvertiert die Zeitdifferenz in die gewünschte Einheit (z. B. Mikrosekunden oder Nanosekunden).

Beispielcode

// C++11 Style:
#include <chrono>

std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
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;

Dieser Code berechnet den Zeitunterschied sowohl in Mikrosekunden als auch in Nanosekunden und bietet präzisere Messungen als time() oder gettimeofday().

Das obige ist der detaillierte Inhalt vonWie kann ich die verstrichene Zeit in C genau messen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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