Wie man die aktuelle Zeit in Millisekunden?
Ich bin neu in C++ und ich weiß nicht viel über seine Bibliothek. Ich brauche Zeit, die Analyse der verschiedenen Sortier-algorithmen, für die ich brauche zu bekommen, die aktuelle Zeit in Millisekunden. Gibt es eine Möglichkeit, das zu tun?
- schauen Sie in std::chorno
- Für die Analyse von Sortier-algorithmen, Millisekunden kann nicht niedrig genug Auflösung, und die "aktuelle Zeit" ist nicht wirklich das, was Sie brauchen, sowieso. Sie wollen die relative Zeit, die es braucht, um eine Aufgabe auszuführen.
std::chrono::high_resolution_clock
ist wahrscheinlich das, was Sie wollen. - Dank gsamaras für die Lösung, nur kleine Zweifel, wie jemand oben in den Kommentaren erwähnt, die aktuelle Zeit ist eine relative Zeit, in java die aktuelle Zeit wird berechnet von Mitternacht 1. Januar 1970, so high_resolution_clock::jetzt () - Funktion gibt die Zeit relativ zu welcher Zeit?
- Sie sind herzlich willkommen! Deine Frage gut. Für die Frage nun, siehe mein edit, die Epoche (εποχή), ist das gleiche in c++ sowie:
Thu Jan 01 01:00:01 1970
. - Möglich, Duplikat der so drucken Sie die aktuelle Zeit (mit Millisekunden) mit C++ / C++11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie einfach std::chrono. Das Allgemeine Beispiel wurde mal die Aufgabe "der Druck 1000 Sterne":
Statt drucken die Sterne, Sie werden Ihre Sortier-Algorithmus es und die Zeit Messen.
Vergessen Sie nicht, aktivieren Sie die Optimierungs-flags für den compiler, wenn Sie beabsichtigen zu tun, benchmarking, z.B. für g++, Sie müssen
-O3
. Das ist ernst, prüfen Sie, was mir passiert, wenn ich nicht so: Warum emplace_back ist schneller als push_back?Ps: Wenn Ihr compiler nicht unterstützt c++11, dann kann man sich in andere Methoden in meinem Zeit-Messungen (C++).
Einer bestimmten (toy) Beispiel, durch die Verwendung meiner Quicksort (C++) wäre:
und die Ausgabe ist jetzt:
Es ist einfach so. Happy benchmarking! =)
EDIT:
Vom std::chrono:
wo könnte man dies prüfen Epoche und time_point Beispiel, welche Ausgänge:
duration<double, std::milli> time_span = t2 - t1;
. Und dann können Sie das ohne manuelle Konvertierung in Millisekunden:<< time_span.count() << " milliseconds."
. Sie können auch drop die expliziteduration_cast
in deinem zweiten Beispiel. Weitere Tipps für das schreiben von zuverlässigerchrono
code hier: youtube.com/watch?v=P32hvk8b13M