clock 함수
프로그램이 실행되면 0부터 1ms당 1씩 clock이 계속 증가하고 있으며, clock()을 호출할 때 현재 clock(현재까지 증가된 clock)을 얻어올 수 있다. 즉 clock()으로 호출된 결과는 호출된 시점에서의 프로그램 실행시간이다. 이를 이용해서 특정 구간 시작과 끝 clock의 차이를 얻어오면 그 구간의 실행시간을 측정할 수 있다.
RTOS/임베디드 시스템에서의 clock 함수
RTOS에서는 clock 함수 사용시 주의가 필요하다. 하드웨어와 직접적으로 연관이 있는 함수이므로 하드웨어/커널 구조에 따라 다른 결과를 가져오거나 못 가져올 수 있다. 따라서 표준 함수인 clock 대신 RTOS를 위해 만들어진 다른 함수가 있는지 찾아보거나 오실로스코프로 시간을 확인하는 등의 다른 방법을 고려해야 한다.
코드
#include <stdio.h> #include <time.h> int main(){ clock_t begin, end; begin = clock(); for(int i=0;i<1000000000;i++) ; // 측정을 원하는 구간 end = clock(); printf("ms : %lf\n", (double)(end-begin)); printf("s : %lf\n", (double)(end-begin)/CLOCKS_PER_SEC); return 0; }
clock 함수의 리턴은 clock_t로 받아온다. clock_t를 표준 입출력 함수로 출력 시 float, double, long 등으로 바꿔주어야 한다. clock 함수의 리턴 단위는 ms다. 100이 출력되었으면 100ms다. 1000으로 나눠주면 sec가 된다. CLOCKS_PER_SEC는 1000과 같다.