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_getIch 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 mitclockspricht die Manpage von "Approximation", was bedeutet das? Wie wäre es mitclock_gettimeIst 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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage