[C] linux 시간측정 gettimeofday

spring·2020년 11월 9일
0

나는 여태 시간 측정을 할때 clock() 함수를 사용했는데, 지난번 sandbox 를 구현하면서 시간이 잘 측정이 안되길래 Sleep() 를 하는동안은 측정을 못하는걸 대충 알고는 있었다.

리눅스에서 clock() 함수는 cpu시간만을 측정하기 때문에 정확한 측정에는 사용하면 안된다.

Sleep()를 쓰지 않아도 cpu가 점유하지 않을땐 측정을 안하는거니까..

여태까지 측정방법이 다 잘못되었구만...-_-

어쨋든 사용방법은 아래와 같다.

#include<sys/time.h>    //gettimeofday, struct time val
#include<stdio.h>       //printf
#include<unistd.h>      //sleep
int main(){
        struct timeval bgn,end;
        double diff;
        gettimeofday(&bgn, NULL);
        sleep(1);
        gettimeofday(&end, NULL);
        diff = end.tv_sec + end.tv_usec / 1000000.0 - bgn.tv_sec - bgn.tv_usec / 1000000.0;
        printf("%f\n", diff);
        return 0;
}

이런 gettimeofday 같은 함수로 측정하는것을 Wall clock time 이라 하고, cpu의 시간만을 재는 clockCpu time 이라고 한다.

Visual Studioclock()Wall clock time 이기 때문에 그대로 써도 상관이 없다.


######Crossflatform 코딩을 위한것은 아래 링크를 참고하자.

http://kimbom.co.kr/c-c-cross-platform-coding/

profile
Researcher & Developer @ NAVER Corp | Designer @ HONGIK Univ.

0개의 댓글