C++ chrono mit zeit rechnen

Rooky420

Cadet 4th Year
Registriert
Nov. 2015
Beiträge
98
Hallo Community,

ich bin noch relativ unerfahren in c++ und habe eine Frage zur Zeitrechnung mit std::chrono

kann man die Zeit in Nanosekunden mit einem anderen Zeitstempel verrechnen?

also ich habe einen Zeitstempel dann Programmcode und dann nochmal einen Zeitstempel nun will ich den zweiten zeitstempel von dem ersten abziehen um zu sehen wie lange der Programmcode dazwischen gedauert hat.
den zeitstempel bekomme ich mit
Code:
std::chrono::system_clock::now()
jetzt will ich sie voneinander abziehen.
Kann man dies irgendwie direkt machen oder MUSS ich die zeitstempel erst zu einem long umwandeln?
Code:
long nanosec = std::chrono::duration_cast<std::chrono::nanoseconds>std::chrono::system_clock::now().time_since_epoch()).count();
ich will das Ergebnis möglichst genau haben und weiß nicht ob dieser Aufruf nicht wieder zeit in Anspruch nimmt und so das Ergebnis etwas verfälscht.

Lg
 
Nicht getestet, aber sowas in der Art:

Code:
system_clock::time_point zeitVorher = system_clock::now();
deineFunktionDerenZeitDuMessenMoechtest();
system_clock::time_point zeitNachher= system_clock::now();

long vorher = std::chrono::duration_cast<std::chrono::nanoseconds>std::chrono::system_clock::now().time_since_epoch()).count();
long nachher = std::chrono::duration_cast<std::chrono::nanoseconds>std::chrono::system_clock::now().time_since_epoch()).count();
long differenz = nachher - vorher;
 
c++ ist zwar hässlich, aber man muss es ja nich noch hässlicher machen als es schon ist:

Code:
auto start = std::chrono::system_clock::now();
auto end = std::chrono::system_clock::now();
	
std::chrono::nanoseconds duration = end - start; //alternativ: auto duration = end-start;

std::cout << "Dauer: " << duration.count() << "ns" << std::endl;

duration_cast brauchts nur, wenn du das Ergebnis mit einer geringeren Auflösung (z.B. Millisekunden) ausgeben möchtest und selbst dann bitte nur einmal ganz am Schluss verwenden.

time_since_epoch brauchst du nur, wenn du mit irgendwelchen leagacy Funktionen interagierst die nicht mit chrono umgehen können.
 
Zuletzt bearbeitet:
Zurück
Oben