gettimeofday() 관련 질문입니다.
글쓴이: seongwon1 / 작성시간: 목, 2004/05/06 - 12:10오후
안녕하세요?
gettimeofday()를 사용하다 궁금한 점이 있어, 질문을 올립니다.
loop가 돌아가는 시간을 초로 표현하고 싶어서 그러는데요.
관련된 글이 있는지 검색을 해봤습니다만, 단순히 gettimeofday()의 syntax를 올려 주신 글이 대부분인지라...^^;
일단 코드를 말씀 드리면요.
struct timeval start, end; if(gettimeofday(&start, NULL)==-1){ fprintf(stderr, "Fail to check start time!\n"); exit(1); } loop loop loop if(gettimeofday(&end, NULL)==-1){ fprintf(stderr, "Fail to check end time!\n"); exit(1); } printf("시작 시각은 %ld\n", start.tv_usec); printf("끝난 시각은 %ld\n", end.tv_usec); printf("걸린 시간은 %ld\n", (start.tv_sec+start.tv_usec) - (start.tv_sec+start.tv_usec));
이런식으로 작성을 했습니다.
pseudocode니깐 문법이 조금 틀린곳이 있을지도 모르겠네요. 여하튼...
결과를 보면
시작 시각은 70226 끝난 시각은 114513 걸린 시간은 44287
이라고 나오는데요. 이 결과값 "44287"이 마이크로 시간이지 않습니까?
참고로 tv_sec는 같게 나옵니다.
그렇다면 이걸 초로 표현하려면 (e.g : 0.00000 초)
마이크로가 10의 -6승이니까 결과 값을 10의 -6승으로 나눠야 하는 건지요?
아니면 씨의 library 함수나 유닉스 또는 리눅스의 system call에서 이런
기능을 제공해 주는 함수가 있는지, 궁금합니다.
고수님들의 도움 부탁드립니다.
날씨가 너무 좋네요. ^^ (ㅠㅠ) 좋은 하루 보내시기 바랍니다.
Forums:
seconds와 micro seconds의 단위가 틀리므로 당연히 따로
seconds와 micro seconds의 단위가 틀리므로 당연히 따로 뺄셈을 하시고, micro sec. 쪽에 음수가 나온다면 sec. 에서 1초를 빌리고 10^6 에서 그 음수 결과를 더하는 처리를 하셔야 합니다. (아니면 미리 두 값을 비교해서 필요하면 빌리고 빼셔도 되구요.)
gettimeofday의 micro seconds가 1초가 넘지 않는다는 보장도 있어야 하구요. (아마 그럴겁니다.) 만약 그렇지 않다면 이것도 미리 10^6을 나눈 몫을 sec.에 더하고 나머지는 micro sec.로 지정하는 작업이 필요하겠습니다.
시간차 출력은 sec.와 micro sec.를 따로 표시하면 되겠습니다.
댓글 달기