본문 바로가기
놀기/초간단 샘플

코드 수행 시간 측정하기

by Hi~ 2021. 10. 15.

코드 수행 시간 측청은 간단하면서도 외우기는 귀찮다. 어디에 써놓고 필요할 때 보는 것이 편하다.

그런 의미에서 여기에 끄적인다.

 

gettimeofday() 함수는 아래와 같이 시간을 얻어올 수 있는데, microseconds를 얻을 수 있다.

 

GETTIMEOFDAY(2)                                                             Linux Programmer's Manual                                                            GETTIMEOFDAY(2)

NAME
       gettimeofday, settimeofday - get / set time

SYNOPSIS
       #include <sys/time.h>

       int gettimeofday(struct timeval *tv, struct timezone *tz);

       int settimeofday(const struct timeval *tv, const struct timezone *tz);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       settimeofday():
           Since glibc 2.19:
               _DEFAULT_SOURCE
           Glibc 2.19 and earlier:
               _BSD_SOURCE

DESCRIPTION
       The functions gettimeofday() and settimeofday() can get and set the time as well as a timezone.

       The tv argument is a struct timeval (as specified in <sys/time.h>):

           struct timeval {
               time_t      tv_sec;     /* seconds */
               suseconds_t tv_usec;    /* microseconds */
           };

       and gives the number of seconds and microseconds since the Epoch (see time(2)).

 

 

gettimeofday() 함수를 사용하면 아래와 같이 코드의 수행 시간을 쉽게 얻을 수 있다.

#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>

int main() 
{
    struct timeval	t1, t2;
    double		elapsedTime;

    gettimeofday(&t1, NULL);

    /* 여기에 코드 추가 */
    sleep(1);

    gettimeofday(&t2, NULL);
    elapsedTime = (t2.tv_sec - t1.tv_sec) * 1000.0;      // sec to ms
    elapsedTime += ((t2.tv_usec - t1.tv_usec) / 1000.0); // us to ms
    printf("\ttake %.2f ms\n", elapsedTime);
	
    return 0;
}

 

위의 코드를 실행해보면 1초가 걸리는 것을 확인할 수 있다.

$ ./time_test
take 1000.99 ms

 

여기에 time 명령어를 써 보면 아래와 같이 확인도 가능하다.

$ time ./time_test
take 1001.47 ms

real 0m1.004s
user 0m0.000s
sys 0m0.002s

 

 

2021.10.15 - [일하기/잡스러운 것] - time 명령어로 프로그램 수행 시간 측정하기

 

time 명령어로 프로그램 수행 시간 측정하기

어떠한 문제를 해결하는 프로그램을 작성하는데 누구의 수행시간이 빠른지 체크하는 것이 한때 유행이었다. 굳이 이런 것이 아니더라도 수행 시간에 민감한 작업을 할 때 주로 사용하던 명령어

busyman.tistory.com

 

 

댓글