죄송한데요 gettimeofday()쓰는법좀 알려주세요
글쓴이: geneven / 작성시간: 목, 2003/04/24 - 2:18오후
매뉴얼 페이지랑 설명서봐도 이해가 안가요,, 초보거든요..
어떤 함수가 끝났을때 걸린 시간을 알고 싶거든요?
근데 타임함수는 초밖에 안나와서요.. 소수점자리까지 출력하고 싶은데요,..
어떻게 해야하죠?
struct timeval begin, end;
gettimeofday(&begin, NULL);
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx
gettimeofday(&end, NULL);
Forums:
쉬워요... *.*그냥 이렇게 쓰면 t1.tv_sec 에 초, t1.
쉬워요... *.*
그냥 이렇게 쓰면 t1.tv_sec 에 초, t1.tv_usec 에 마이크로초가 채워지죠
gettimeofday( &t1 , NULL );
보통 어떤 루틴의 경과시간을 잴때 많이 사용하죠...
struct timeval t1 , t2 ;
gettimeofday( &t1 , NULL );
// routine..............................
gettimeofday( &t2 , NULL );
EX)
struct timeval diff_(struct timeval t1 , struct timeval t2 )
{
int sdiff = t2.tv_sec - t1.tv_sec ;
int udiff = t2.tv_usec - t1.tv_usec ;
struct timeval result ;
result.tv_sec = sdiff ;
if( udiff >= 0 )
result.tv_usec = udiff ;
else
{
result.tv_sec = result.tv_sec -1 ;
result.tv_usec = 1000000 + udiff ;
}
return result ;
}
이런것도 해야 하거든요??
어떤 함수를 100번 실행하고 평균값을 내야하는데요..
한번 실행할때 마다 시간을 재서 더한다음 100으로 나누는거거든요?
timeval형 자료를 소수점이 있는 float형으로 변환시켜주는 함수는 없나요?
그래야 더해서 계산할수 있을꺼 같은데요..
단순히 평균값만을 이용하시려면그냥 [code:1]get
단순히 평균값만을 이용하시려면
그냥
하시면 될것 같은데요 ?
아니면 다음과 같은 함수를 만드셔서 그 결과값을 더하셔도 될테지요
(그러나 이 경우 오버 플로우도 생각하셔야 할것입니다)
아래 함수는 해상도가 밀리 단위입니다.
[/code]Re: 이런것도 해야 하거든요??
왜 굳이 100번만 실행하죠?
한 100만번 쯤 실행하면
ANSI C time() 함수로도 충분히 정확히 측정 가능하잖아요?
struct timeval t1 , struct timeval t2 두
struct timeval t1 , struct timeval t2 두개의 구조체가 있다면..
t1.tv_sec는 초단위, t1.tv_usec는 마이크로세컨(10^-6) 단위니까..
하시면 될거 같군요.. 정확하게 하려면 casting 같은거 해주면 좋겠지만..
굳이 함수까지야.. 쓸거없이 저렇게 처리하시면 되겠네요..
ksil 님의 방법대로 먼저 값을 뺀 다음에 곱하는게.. 곱셈을 단축시켜서
더 빠른 방법일거 같네요.. :)
..........No Sig.........|
-------------------+
댓글 달기