Zmierz czas w Linuksie - czas vs zegar vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?

Wśród funkcji czasowychtime, clock getrusage, clock_gettime, gettimeofday itimespec_get, Chcę jasno zrozumieć, jak są one wdrażane i jakie są ich wartości zwrotne, aby wiedzieć, w jakiej sytuacji muszę ich użyć.

Najpierw musimy sklasyfikować funkcje powracającewartości zegara ściennego porównaj z funkcjami powracającymiwartości procesu lub wątków. gettimeofday zwraca wartość zegara ściennego,clock_gettime zwraca wartość zegara ściennegolub wartości procesu lub wątków w zależności odClock parametr przekazany do niego.getrusage iclock zwracaj wartości procesowe.

Następnie drugie pytanie dotyczy realizacji tych funkcji, aw konsekwencji ich dokładności. Który mechanizm sprzętu lub oprogramowania korzysta z tych funkcji.

Wygląda na to żegetrusage używa tylko kleszcza jądra (zwykle 1ms) iw konsekwencji nie może być bardziej dokładny niż ms. Czy to jest poprawne? A późniejgetimeofday wydaje się, że funkcja korzysta z najbardziej dokładnego dostępnego sprzętu. W konsekwencji jego dokładność jest zazwyczaj mikrosekundą (nie może być większa z powodu interfejsu API) na ostatnim sprzęcie. Co powiesz naclock, strona man mówi o „przybliżeniu”, co to znaczy? Co powiesz naclock_gettime, API jest w nanosekundie, czy to znaczy, że może być tak dokładne, jeśli pozwala na to podstawowy sprzęt? A co z monotonicznością?

Czy są jakieś inne funkcje?

questionAnswers(2)

yourAnswerToTheQuestion