컴퓨터의 Execution Time 측정방법
Elapsed time
한 작업을 끝내는데 필요한 전체 시간을 이야기합니다. 실제 확인하고 싶을 때는
C언어에서 time.h 라이브러리에 있는 clock() 함수를 이용합니다.
clock_t start, end;
double result;
start = clock();
/// 매우 많은 코드
end = clock();
result = (double)(end - start);
CPU time
주어진 한 가지 일에 대하여 processing 하는데에 걸리는 시간
cpu time은 클럭 사이클에 영향을 많이 받는데 클럭 사이클은 보통 hz 단위로 측정한다. hz는 1초에 생기는 on/off 횟수를 의미하는 것이다.
ex ) 1 Ghz는 1초에 10억번의 on/off가 일어난다는 소리이다.
1,000,000,000 hz = 1 Ghz
1,000,000 hz = 1 Mhz
1,000 hz = 1 Khz
해당 cpu time을 계산할 때는
cpu time = cpu clock cycles * cpu clock cycle time
식이 나오는데 여기서 cpu clock cycle time이란 1 사이클 당 걸리는 시간을 의미한다. 즉 cpu time이 적을수록 성능이 좋다고 평가할 수 있다.
해당 식을 clock rate 를 이용하여 표현할 수도 있다. clock rate 는 초당 실행하는 사이클 수를 GHz 단위로 측정한 것이다.
clock rate = cpu clock cycles / cpu time
으로 표현한다.
cpu 의 성능은 또 프로세싱에 필요한 명령어의 개수에 영향을 받는다. 여기서 명령어는 instruction 이고 이것의 집합을 instruction set 이라고 한다.
인텔, arm, mips 등 여러 회사에서 자기만의 하드웨어를 위한 instruction set을 가지고 있으며 이러한 구조를
instruction set architecture (ISA) 라고 한다.
이것의 성능 계산은 CPI (Clock cycles Per Instruction) 을 이용한다.
cpu clock cyles = instruction count * CPI 을 이용하게 된다.
즉, cpu time = instruction count * CPI * clock cycle time 이 된다.
cpu time의 비교는
cpu time(A) / cpu time(B)
로 A가 B보다 몇 배 느린지 확인할 수 있다.