Microtime () - Äquivalent für C und C++?
Frage ich mich, ob es ein äquivalent zur PHP-Funktion microtime() in C und C++. Ich sah mich um, konnte aber nicht finden eine definitive Antwort.
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unter Linux, die Sie verwenden können,gettimeofday, die sollte die gleichen Informationen. In der Tat, ich glaube, dass ist die Funktion, die PHP verwendet, unter der Decke.
Gibt es kein genaues äquivalent zu PHPs microtime(), aber man könnte eine Funktion mit einer ähnlichen Funktionalität basiert auf dem folgenden code:
Mac OS X und wahrscheinlich auch Linux/Unix
(basierend auf: http://brian.pontarelli.com/2009/01/05/getting-the-current-system-time-in-milliseconds-with-c/)
Windows:
(Antwort von Darcara, aus: https://stackoverflow.com/a/4568649/330067)
struct timeval time;
C++11 Hinzugefügt einige standard-Zeitmessung-Funktionen (siehe Abschnitt 20.11 "Time utilities") mit guter Genauigkeit, aber die meisten Compiler unterstützen nicht diejenigen, die noch.
Meist müssen Sie Ihre OS-API, wie
gettimeofday
für POSIX.Timing-code-Abschnitte, versuchen std::Uhr gibt Zecken, dann teilen Sie durch
CLOCKS_PER_SEC
.libUTP (uTorrent-Transport-Protokoll-Bibliothek) hat eine gute Beispiel immer auf der microtime auf verschiedenen Plattformen.
in c++11 ich glaube, die identisch zu php ' s
microtime(true)
ist:interessanterweise eine Mikrosekunde ist eine Millionstel einer Sekunde, aber c++ unterstützt auch von Nanosekunden, das ist der MILLIARDSTE Teil einer Sekunde, ich denke, Sie bekommen würde, höhere Präzision, mit
std::chrono::nanoseconds
stattstd::chrono::microseconds
, aber an diesem Punkt würden Sie wahrscheinlich laufen in die max Anzahl Grenzen derdouble
, und den Namen der Funktion in die Irre führen würde (eine solche Funktion haben sollten, den Namennanotime()
nichtmicrotime()
und die Rückkehr sollte wohl etwas größer sein als das doppelte), btw ich habe eine Sammlung von php-Funktionen, die portiert-zu-c++ - hier: https://github.com/divinity76/phpcpp (und microtime() ist unter Ihnen)