Kennt sich jemand mit Zeitmessung in c++ aus?

...komplette Frage anzeigen

2 Antworten

Die "einfachen" Zeitmess-Funktionen aus "time.h" sind für diesen Zweck komplett unzureichend.

Die exaktesten Ergebnisse erreichst Du mittels CPU-Clock-Zählern, die heutzutage in jeder CPU stecken, aber extrem systemabhängig (OS- und Hardware-abhängig) angesprochen werden müssen.

In der Größenordnung vergleichbare Ergebnisse erreichst Du mit Funktionen, die auf Betriebssystem-Ebene bereitgestellt werden (nur noch OS-abhängig, aber bereits unabhängig von der Hardware).

Eine Alternative zur OS-Abhängigkeit bilden Bibliotheken (für C++ z.B. "wxWidgets" und "Boost"), die häufig benötigte Alltagsfunktionen bereitstellen und intern für deren Weiterleitung an systemspezifische Funktionen sorgen. Damit ist man als Programmierer Hardware- und OS-unabhängig, aber an die verwendete Bibliothek gebunden (was auch wieder Komplikationen mit sich bringen kann).

Das letztere ist der typische derzeitige Weg von C++-Programmierern. Noch eine Alternative wäre die Wahl einer Programmiersprache, die von vornherein vom Sprachstandard her bereits eine üppige Laufzeitbibliothek für die meisten Alltagsaufgaben mitbringt und unter der Fuchtel einer einzigen Firma steht. Das ist bei einer Vielzahl der "moderneren" Programmiersprachen der Fall, wobei Java wohl am empfehlenswertesten als allgemeine Programmiersprache oder PHP als Programmiersprache für kleine Webprojekte wäre. Zeitmessung ist bei denen bereits mindestens in Microsekundenauflösung eingebaut.

clock() gibt nicht die "richtige" Zeit, sondern die clockticks des laufenden Prozesses, also verbrauchte Zeit.

Was du machen willst, dafür nimmt man time() und difftime() (beide aus der ctime.h). Und falls du auch Sekundenbruchteile messen willst, vielleicht eher gettimeofday() (aus der sys/time.h).

Was möchtest Du wissen?