Zu den Zeitfunktionen, time
, clock
getrusage
, clock_gettime
, gettimeofday
und timespec_get
, mag ich klar verstehen , wie sie umgesetzt werden und was sind ihre Rückgabewerte , um zu wissen , in welcher Situation ich habe sie zu nutzen.
Zuerst müssen wir Funktionen klassifizieren, die Wanduhrwerte zurückgeben , im Vergleich zu Funktionen, die Prozess- oder Threadwerte zurückgeben . gettimeofday
Gibt den Wanduhrwert zurück, clock_gettime
gibt den Wanduhrwert oder den Prozess- oder Threadwert zurück, abhängig von dem an ihn übergebenen Clock
Parameter. getrusage
und clock
Prozesswerte zurückgeben.
Die zweite Frage betrifft dann die Implementierung dieser Funktionen und folglich ihre Genauigkeit. Welchen Hardware- oder Softwaremechanismus verwenden diese Funktionen?
Es scheint, dass getrusage
nur der Kernel-Tick verwendet wird (normalerweise 1 ms lang) und daher nicht genauer als die ms sein kann. Ist es richtig? Dann getimeofday
scheint die Funktion die genaueste zugrunde liegende verfügbare Hardware zu verwenden. Infolgedessen beträgt seine Genauigkeit normalerweise die Mikrosekunde (kann aufgrund der API nicht höher sein) auf neuerer Hardware. Was ist mit clock
, die Manpage spricht von "Annäherung", was bedeutet das? Was clock_gettime
ist mit der API in Nanosekunden? 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?
clock_gettime
, daher die Verwendunggettimeofday()
, ein wenig vielseitiger zu sein alsclock_gettime()