Zu den Zeitfunktionen, time, clock getrusage, clock_gettime, gettimeofdayund 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 . gettimeofdayGibt den Wanduhrwert zurück, clock_gettimegibt den Wanduhrwert oder den Prozess- oder Threadwert zurück, abhängig von dem an ihn übergebenen ClockParameter. getrusageund clockProzesswerte 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 getrusagenur der Kernel-Tick verwendet wird (normalerweise 1 ms lang) und daher nicht genauer als die ms sein kann. Ist es richtig? Dann getimeofdayscheint 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_gettimeist 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()