본문 바로가기

4.개발 및 운영 환경

실행시간 측정

작성일: 2009.04.13 (http://ospace.tistory.com/), ospace114@엠팔.컴

getrusage()

  • 헤더: #include <sys/time.h>, #include <sys/resource.h>
  • 호한: linux
  • 언어: c

리소스 사용량 획득.

gettimeofday()

  • 헤더: #include <sys/time.h>
  • 호한: linux
  • 언어: c

usec 단위 까지 측정이 가능하다. time()보다 이 함수 사용을 추천한다. 이함수는 SUSv4-2008에서 obsolescent 함수로 지정되어 제거될 예정이다. 대신 clock_gettime()을 사용을 추천한다.

#include <sys/time.h>

struct timeval tv;
gettimeofday(&tv, NULL);

clock_gettime()

  • 헤더: #include <time.h>
  • 호한: linux
  • 언어: c

usec 단위 까지 측정이 가능하다. 실제 usec는 아니며 clock_getres()로 정밀도 확인 가능하다. clockid_t에 CLOCK_REALTIME을 사용하면 gettimeofday()와 동일한 작업이 가능하다.

#include <time.h>

struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);

clock()

  • 헤더: #include <time.h>
  • 호환: ANSI, win98, win me, win nt, win 2000, win xp
  • 라이브러리: All C-runtime library
  • 언어: c

CLOCKS_PER_SEC은 Windows에서 1000이라는 값는다. 이는 msec 단위까지 측정이 가능하다.

#include <time.h>

clock_t start = clock();
double start_sec = start / CLOCKS_PER_SEC;

getTickCount()

  • 헤더: #include <windows.h>
  • 호환: Win 95, Win 98, Win me, Win 2000, win xp, win 2000, win nt, win 2003 이후
  • 라이브러리: Kernel32.lib
  • 언어: c
DWORD stat = getTickCount(); // return the number of miliseconds since the system was started.

timeGetTime()

  • 헤더: #include <windows.h>
  • 호환: Win 95, Win 98, WIn Me, Win nt 이후
  • 라이브러리: Winmm.lib
  • 언어: c

msec단위까지 측정 가능하다.

DWORD start = timeGetTime();

microtime()

  • 헤더: 없음
  • 호환: 없음
  • 라이브러리: 없음
  • 언어: php
$start = explode("", microtime());

System.currentTimeMillis(), System.nanoTime()

  • 헤더: 없음
  • 호환: 없음
  • 라이브러리: JDK
  • 언어: java
long start = System.currentTimeMillis();
long start = System.nanoTime();

Date().getTime()

  • 헤더: 없음
  • 호환: 없음
  • 라이브러리: 없음
  • 언어: javascript
var start = new Date().getTime(); //msec

chrono::high_resolution_clock::now()

  • 헤더: chrono
  • 호환: 없음
  • 라이브러리: 없음
  • 언어: c++
auto begin = std::chrono::high_resolution_clock::now();
// something do
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double, milli=""> runtime = end - begin;

참고

[1] 믿을 만한 자바 벤치마킹, Part1: 다양한 이슈, http://www.ibm.com/developerworks/kr/library/j-benchmark1.html

반응형