오늘은 linux system에서 보다 정확한 성능 측정을 위해 timeval 구조체를 사용하는 법을 말하겠다.
static double time_since(struct timeval *start_tv, struct timeval *stop_tv)
{
double sec, usec;
double ret;
sec = stop_tv->tv_sec - start_tv->tv_sec;
usec = stop_tv->tv_usec - start_tv->tv_usec;
if (sec > 0 && usec < 0) {
sec--;
usec += 1000000;
}
ret = sec + usec / (double)1000000;
if (ret < 0)
ret = 0;
return ret;
}
함수 'time_since'는 두 'struct timeval' 객체 ('start_tv'와 'stop_tv' (주로 'end_tv')) 간의 시간 차이를 초 단위로 계산하는 함수이다. 이 함수는 주로 성능 측정을 위해 사용된다. 'struct timeval'은 초 ('tv_sec')와 마이크로초 ('tv_usec') 단위로 시간을 나타내는 구조체이다.
static double time_since(struct timeval *start_tv, struct timeval *stop_tv)
{
double sec, usec;
double ret;
sec = stop_tv->tv_sec - start_tv->tv_sec;
usec = stop_tv->tv_usec - start_tv->tv_usec;
if (sec > 0 && usec < 0) {
sec--;
usec += 1000000;
}
ret = sec + usec / (double)1000000;
if (ret < 0)
ret = 0;
return ret;
}
이 함수는 두 'struct timeval' 객체 간의 시간 차이를 초 단위로 정확하게 계산하여 반환한다. 초와 마이크로초 차이를 개별적으로 계산하고, 음수 마이크로초 값을 보정하며, 최종적으로 음수 시간이 반환되지 않도록 한다. 이 함수는 성능 측정이나 시간 간격 계산과 같은 다양한 용도에 사용될 수 있다.