일부 코드를 실행하는 데 걸리는 시스템 시간을 측정하고 싶습니다. 이렇게하려면 ... 나는 샌드위치 두 통화 사이의 코드) (기능적으로 뒤 떨어지고 있다고 것 알지만, 예상치 못한 결과를 얻을 수getrusage()를 사용하여 C에서 시스템 시간 측정하기
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#include <stdio.h>
int main() {
struct rusage usage;
struct timeval start, end;
int i, j, k = 0;
getrusage(RUSAGE_SELF, &usage);
start = usage.ru_stime;
for (i = 0; i < 10000; i++) {
/* Double loop for more interesting results. */
for (j = 0; j < 10000; j++) {
k += 20;
}
}
getrusage(RUSAGE_SELF, &usage);
end = usage.ru_stime;
printf("Started at: %ld.%lds\n", start.tv_sec, start.tv_usec);
printf("Ended at: %ld.%lds\n", end.tv_sec, end.tv_usec);
return 0;
}
내가하지만 슬프게도,이 두 개의 서로 다른 번호를 생산하고 희망! 나는()을 마우스 오른쪽은 getrusage를 사용하지
Started at: 0.1999s
Ended at: 0.1999s
암 : 내 컴퓨터가 두 번째 또는 두에 대한 생각 본 후,이 결과인가? 이 두 숫자가 다른 이유는 무엇입니까? 근본적으로 잘못된 것이라면 getrusage()를 사용하여 일부 소스 코드의 시스템 시간을 측정하는 또 다른 방법이 있습니까? 읽어 주셔서 감사합니다.
'tv_usec '는 마이크로 초이므로 형식은'% lu. % 06u'이어야합니다. – Mapio