[완료]gettimeofday()함수 사용방법?
글쓴이: hezc81 / 작성시간: 일, 2007/04/01 - 2:24오후
gettimofday()를 이용하여 연산시간을 확인하려고 합니다.
단위를 seconds로 하려고 하는데 제가원하는 값이 나오지않고 큰숫자가 나옵니다.
전 마크로초가 100만분에 1초라서 1000000만을 곱해주었는데 제가연산을 틀린게 한건가요?
long et
gettimeofday(&time1, NULL);
{
...연산부분....
}
gettimeofday(&time2, NULL);
et = (time2.tv_sec-time1.tv_sec)+(time2.tv_usec-time1.tv_usec)*1000000;
printf("Elapsed time : %ld seconds\n", et);Forums:


다음과 같이
다음과 같이 쓰십시요.
struct tim result; result.tv_sec = time2.tv_sec - time1.tv_sec; result.tv_usec = time2.tv_usec - time1.tv_usec; if (result.tv_usec < 0) { result.tv_sec--; result.tv_usec += 1000000L; } return (result.tv_sec + (result.tv_usec/1000000L));코드 매크로로
코드 매크로로 감쌌는데도 불구하고 댓글에 코드가 안보이네요..
1000000usec가 1초기 때문에 1000000을 곱하는게 아니라 나누어야 합니다.
timeval 을 빼거나 더할
timeval 을 빼거나 더할 때는 sys/time.h에 있는 다음 매크로를 이용하세요.
# define timeradd(a, b, result) \ do { \ (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \ (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \ if ((result)->tv_usec >= 1000000) \ { \ ++(result)->tv_sec; \ (result)->tv_usec -= 1000000; \ } \ } while (0) # define timersub(a, b, result) \ do { \ (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ if ((result)->tv_usec < 0) { \ --(result)->tv_sec; \ (result)->tv_usec += 1000000; \ } \ } while (0)----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
감사합니다. 해결했습니다.
매크로함수가 다해결해주네요^^;;
항상 웃으며 살자!!
항상 웃으며 살자!!
댓글 달기