Zeit in Linux messen - Zeit gegen Uhr gegen Getrusage gegen Clock_gettime gegen Gettimeofday gegen Timespec_get?
Unter den Zeitfunktionentime
, clock
getrusage
, clock_gettime
, gettimeofday
undtimespec_get
Ich möchte klar verstehen, wie sie implementiert sind und welche Rückgabewerte sie haben, um zu wissen, in welcher Situation ich sie verwenden muss.
Zuerst müssen wir die zurückgegebenen Funktionen klassifizierenWanduhr-Werte Vergleiche mit Funktionen, die zurückkehrenProzess- oder Thread-Werte. gettimeofday
gibt den Wert der Wanduhr zurück,clock_gettime
Gibt den Wert der Wanduhr zurückoder Prozess- oder Thread-Werte in Abhängigkeit vonClock
Parameter übergeben.getrusage
undclock
Prozesswerte zurückgeben.
Die zweite Frage betrifft dann die Implementierung dieser Funktionen und infolgedessen deren Genauigkeit. Welchen Hardware- oder Softwaremechanismus verwenden diese Funktionen?
Es scheint, dassgetrusage
Verwendet nur das Kernel-Häkchen (normalerweise 1 ms lang) und kann daher nicht genauer als die ms sein. Ist es richtig? Dann ist diegetimeofday
Die Funktion scheint die genaueste zugrunde liegende verfügbare Hardware zu verwenden. Infolgedessen ist seine Genauigkeit in der Regel die Mikrosekunde (kann aufgrund der API nicht länger sein) auf neuerer Hardware. Wie wäre es mitclock
spricht die Manpage von "Approximation", was bedeutet das? Wie wäre es mitclock_gettime
Ist die API in Nanosekunden angegeben? Bedeutet dies, dass sie so genau sein kann, wenn die zugrunde liegende Hardware dies zulässt? Was ist mit Monotonie?
Gibt es noch andere Funktionen?