Namespaces
Variants

std:: clock

From cppreference.net
< cpp ‎ | chrono ‎ | c
Definiert in Header <ctime>
std:: clock_t clock ( ) ;

Gibt die ungefähre Prozessorzeit zurück, die vom Prozess seit Beginn einer implementationsdefinierten Ära in Bezug auf die Programmausführung verwendet wurde. Um den Ergebniswert in Sekunden umzuwandeln, teilen Sie ihn durch CLOCKS_PER_SEC .

Nur die Differenz zwischen zwei Werten, die durch verschiedene Aufrufe von std::clock zurückgegeben werden, ist aussagekräftig, da der Beginn der std::clock -Ära nicht mit dem Start des Programms übereinstimmen muss.

std::clock Zeit kann schneller oder langsamer fortschreiten als die Wanduhr, abhängig von den Ausführungsressourcen, die dem Programm vom Betriebssystem zugewiesen werden. Beispielsweise, wenn die CPU von anderen Prozessen gemeinsam genutzt wird, kann die std::clock Zeit langsamer fortschreiten als die Wanduhr. Andererseits, wenn der aktuelle Prozess multithreaded ist und mehr als ein Ausführungskern verfügbar ist, kann die std::clock Zeit schneller fortschreiten als die Wanduhr.

Inhaltsverzeichnis

Rückgabewert

Bisher vom Programm verwendete Prozessorzeit.

  • Falls die verwendete Prozessorzeit nicht verfügbar ist, wird ( std:: clock_t ) ( - 1 ) zurückgegeben.
  • Falls der Wert der verwendeten Prozessorzeit nicht durch std::clock_t dargestellt werden kann, wird ein nicht spezifizierter Wert zurückgegeben.

Exceptions

Wirft nichts.

Hinweise

Auf POSIX-kompatiblen Systemen bietet clock_gettime mit der Clock-ID CLOCK_PROCESS_CPUTIME_ID eine bessere Auflösung.

Der von clock() zurückgegebene Wert kann auf einigen Implementierungen umlaufen. Zum Beispiel wird auf einer solchen Implementierung, wenn std::clock_t ein vorzeichenbehafteter 32-Bit-Integer ist und CLOCKS_PER_SEC den Wert 1 '000' 000 hat, der Wert nach etwa 2147 Sekunden (etwa 36 Minuten) umlaufen.

Beispiel

Dieses Beispiel demonstriert den Unterschied zwischen clock() Zeit und Echtzeit.

#include <chrono>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <thread>
// The function f() does some time-consuming work.
void f()
{
    volatile double d = 0;
    for (int n = 0; n != 10000; ++n)
        for (int m = 0; m != 10000; ++m)
            d += d * n * m;
}
int main()
{
    const std::clock_t c_start = std::clock();
    auto t_start = std::chrono::high_resolution_clock::now();
    std::thread t1(f);
    std::thread t2(f); // f() is called on two threads
    t1.join();
    t2.join();
    const std::clock_t c_end = std::clock();
    const auto t_end = std::chrono::high_resolution_clock::now();
    std::cout << std::fixed << std::setprecision(2) << "CPU time used: "
              << 1000.0 * (c_end - c_start) / CLOCKS_PER_SEC << "ms\n"
              << "Wall clock time passed: "
              << std::chrono::duration<double, std::milli>(t_end - t_start) << '\n';
}

Mögliche Ausgabe:

CPU time used: 1590.00ms
Wall clock time passed: 808.23ms

Siehe auch

konvertiert ein std::time_t Objekt in eine textuelle Darstellung
(Funktion)
gibt die aktuelle Systemzeit als Zeit seit Epoche zurück
(Funktion)