Datums- und Zeitenunterstützung
C++ unterstützt zwei Arten von Zeitmanipulationen:
- Die
chrono
-Bibliothek ist eine Sammlung von flexiblen Typen, die das Benutzen von Zeiten, Zeiträumen und Zeitpunkten mit unterschiedlichen Präzisionsgraden (z.B. std::chrono::time_point) ermöglichen. - Die Datums- und Uhrzeitbibliothek im C-Stil (beispielsweise std::time).
Inhaltsverzeichnis |
[Bearbeiten] Die chrono
-Bibliothek
Die chrono
-Bibliothek definiert drei Haupttypen (Dauer, Uhren und Zeitpunkte), sowie Hilfsfunktionen und gemeinsame typedefs.
[Bearbeiten] Zeitdauer
Eine Zeitdauer besteht aus einer Zeitspanne, die als eine Anzahl von Schritten einiger Zeiteinheit definiert ist. Beispielsweise könnte "42 Sekunden" durch eine Dauer, bestehend aus 42 Schritten einer einsekündigen Zeiteinheit dargestellt werden.
definiert in Header <chrono> | |
definiert in Namensraum std::chrono | |
(C++11) | ein Zeitintervall Original: a time interval The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (Klassen-Template) |
[Bearbeiten] Uhren
Eine Uhr besteht aus einem Ausgangspunkt (oder Epoche) und einer Schrittweite. Zum Beispiel kann eine Uhr eine Epoche, die am 1. Januar 1970 began, und eine Schrittweite von 1 Sekunde besitzen. C++ definiert drei Typen von Uhren:
definiert in Header <chrono> | |
definiert in Namensraum std::chrono | |
(C++11) | Uhr, die die systemweite Echtzeituhr zur Verfügung stellt (Klasse) |
(C++11) | streng monotone Uhr, die niemals angepasst wird (Klasse) |
(C++11) | die Uhr mit der kleinsten, verfügbaren Zeitschrittweite (Klasse) |
[Bearbeiten] Zeitpunkt
Ein Zeitpunkt ist eine Zeitdauer, die seit Beginn der Epoche der spezielle Uhr andauert.
definiert in Header <chrono> | |
definiert in Namensraum std::chrono | |
(C++11) | ein Zeitpunkt (Klassen-Template) |
[Bearbeiten]Datums- und Uhrzeitbibliothek im C-Stil
Weiterhin sind die Datums- und Uhrzeitfunktionen im C-Stil, wie std::time_t, std::difftime und CLOCKS_PER_SEC verfügbar.
[Bearbeiten] Beispiel
Dieses Beispiel zeigt Informationen über die Ausführungszeit einer aufgerufenen Funktion:
#include <iostream>#include <chrono>#include <ctime> int fibonacci(int n){if(n <3)return1;return fibonacci(n-1)+ fibonacci(n-2);} int main(){std::chrono::time_point<std::chrono::system_clock> start, end; start =std::chrono::system_clock::now();int result = fibonacci(42); end =std::chrono::system_clock::now(); int elapsed_seconds =std::chrono::duration_cast<std::chrono::seconds>(end-start).count();std::time_t end_time =std::chrono::system_clock::to_time_t(end); std::cout<<"finished computation at "<<std::ctime(&end_time)<<"elapsed time: "<< elapsed_seconds <<"s\n";}
Possible output:
finished computation at Sat Jun 16 20:42:57 2012 elapsed time: 3s