코드 수행 시간 측청은 간단하면서도 외우기는 귀찮다. 어디에 써놓고 필요할 때 보는 것이 편하다.
그런 의미에서 여기에 끄적인다.
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 명령어로 프로그램 수행 시간 측정하기
'놀기 > 초간단 샘플' 카테고리의 다른 글
포스트맨(Postman)이 만들어준 코드로 예제 만들기 (C 언어, curl library) (0) | 2021.10.11 |
---|---|
[초간단] Java에서 랜덤 값 만들기 (Math.random()) (0) | 2021.08.26 |
[초간단] Java Sleep 코드 (0) | 2021.08.26 |
댓글