Messen der Ausführungszeit einer Funktion in C
In C kann das genaue Messen der Ausführungszeit einer Funktion aufgrund der Systemlast eine Herausforderung sein Variationen. Dies kann zu unzuverlässigen Ergebnissen führen, wenn Standardmethoden wie std::chrono::system_clock::now() verwendet werden.
Alternativer Ansatz mit Boost.Chrono
The Boost Die .Chrono-Bibliothek bietet eine genauere Methode zur Messung der Funktionsausführungszeit. Konkret erfasst die Funktion „process_user_cpu_clock“ die vom aktuellen Prozess verbrauchte CPU-Zeit.
Verwendung von „process_user_cpu_clock“
Um „process_user_cpu_clock“ zu verwenden, fügen Sie den Chrono-Header ein und führen Sie die folgenden Schritte aus:
void timed_function() { // Your code to execute }
using namespace boost::chrono; duration<double, std::milli> elapsed; auto start = process_user_cpu_clock(); timed_function(); auto end = process_user_cpu_clock(); elapsed = end - start;
Die verstrichene Variable enthält die Dauer der zeitgesteuerten Funktion in Millisekunden.
Hochauflösende Uhr in C 11
Wenn Sie C 11 oder höher verwenden, können Sie auch die std::chrono::high_resolution_clock für präzises Timing verwenden. Die Verwendung ähnelt Boost.Chrono, wie im folgenden Beispiel gezeigt:
using namespace std::chrono; using ms = milliseconds; auto t1 = high_resolution_clock::now(); timed_function(); auto t2 = high_resolution_clock::now(); duration<ms> elapsed = t2 - t1;
Geschwindigkeitsvergleich
Durch Verwendung von entweder Boost.Chrono oder std::chrono ::high_resolution_clock können Sie die Ausführungszeiten von Funktionen genau messen und vergleichen, um ihre relativen Geschwindigkeiten zu bestimmen.
Das obige ist der detaillierte Inhalt vonWie kann ich die Ausführungszeit einer C-Funktion genau messen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!