시간 측정..

leolo의 이미지

시간을 측정하고 싶습니다.
단위는 초이고요..

case XXX:
측정 시작
break;
case YYY:
측정 끝

변수 = 측정끝-측정시작:
break;

이렇게 하고 싶은데. 적절한 코드 부탁드립니다.
단위는 초입니다.

정태영의 이미지

man 3 time

unixtime은 초단위입니다 ;)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

mach의 이미지

// 필요한 변수
struct timeval  startTime, endTime;
long secElapsed, microsecElapsed;

...

case XXX:
  //측정 시작
  gettimeofday(&startTime, 0);
break;
case YYY:
   // 측정 끝
  gettimeofday(&endTime, 0);

  //변수 = 측정끝-측정시작:
  secElapsed = endTime.tv_sec - startTime.tv_sec; //초
  microsecElapsed = abs(endTime.tv_usec - startTime.tv_usec); // 마이크로초(1,000,000 = 1초) 0~ 999,999 사이값을 가져야 타당함, 양수
break;
...

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

evileye의 이미지

timersub라는 매크로도 있습니다.

# 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)