2015-01-19 1 views
0

예를 들어, 나는 몇 가지 기능 foo을하고 난 다음 형식으로의 경과 시간을 얻으려면 :밀리 초 및 마이크로 초의 정확도로 POSIX에서 경과 시간을 측정하는 가장 좋은 방법은 무엇입니까?

1 seconds 101 milliseeconds 31 microseconds 

또는 지금 내가이 문제를 해결하기 위해 다음 코드를 사용

0 seconds 91 milliseeconds 101 microseconds 

:

static struct timeval t1, t2; 
gettimeofday(&t1, NULL); 
foo(); 
gettimeofday(&t2, NULL); 
unsigned long long t = 1000 * (t2.tv_sec - t1.tv_sec) + (t2.tv_usec - t1.tv_usec)/1000; 
printf("elapsed time %llu ms\n", t); 

인터넷에서이 수식을 가져 와서 완전히 이해하지 못했습니다. 왜 내가 1000 배로 (t2.tv_sec - t1.tv_sec) 곱해야합니까? 밀리 초 및 마이크로 초의 정확도로 POSIX에서 경과 시간을 측정하는 가장 좋은 방법은 무엇입니까?

답변

2

측정 시간은 복잡한 문제입니다. 일반적으로 가장 좋은 방법은 clock_gettime()입니다.

여러 특성을 가진 여러 클럭을 지원합니다. 자세한 내용은 this 링크를 확인하십시오.

1

필드는 경과 된 시간 (마이크로 초)이고 tv_sec은 초 단위로 경과 된 시간입니다.

tv_sec 필드를 1000으로 곱하면 초를 밀리 초로 변환하고 tv_usec을 1000으로 나누면 마이크로 초를 밀리 초로 변환합니다.

나는 clock_gettime()을 제안하려고했지만 그 전에는 Let_Me_Be에 답변을 게시했습니다.

관련 문제