보통 특정 연산에 걸리는 시간을 측정하기 위해서는 특정 연산 수행 전에 getTickCount() 함수 반환값을 저장해 놓고, 연산 후에 다시 getTickCount() 함수 반환값을 구하여 그 차이를 계산합니다. 이렇게 계산되는 틱 횟수 차이 값은 사용하고 있는 컴퓨터 시스템의 성능에 따라 다르게 측정됩니다. 그러므로 실제 연산 시간을 알아내기 위해서는 틱 횟수 차이를 시스템의 틱 주파수(tick frequency)로 나누는 작업이 동반되어야 합니다. 틱 주파수란 1초 동안 발생하는 틱 횟수를 의미하며, OpenCV에서는 getTickFrequency() 함수를 이용하여 시스템 틱 주파수를 구할 수 있습니다.
double getTickFrequency(void) |
|
• 반환값 |
시스템의 초당 틱 횟수 |
특정 연산이 수행되는 시간을 측정하기 위해서는 getTickCount() 함수와 getTickFrequency() 함수를 같이 조합해서 사용합니다. 만약 특정 함수가 수행되는 시간을 밀리초 단위로 측정하려면 다음과 같이 코드를 작성합니다.
int64 t1 = getTickCount(); my_func(); // do something int64 t2 = getTickCount(); double ms = (t2 - t1) * 1000 / getTickFrequency();
앞 코드에서는 my_func() 함수 호출 전후에 각각 getTickCount() 함수를 호출하여 틱 횟수 차이(t2 - t1)을 계산하였습니다. 이 차이 값을 getTickFrequency() 함수 반환값으로 나누면 초 단위의 수행 시간이 측정됩니다. 그러나 대부분의 연산이 보통 1초 이내에 수행되는 경우가 많기 때문에, 앞 소스 코드에서는 연산 시간에 1000을 곱하여 밀리초 단위의 연산 시간을 변수 ms에 저장하였습니다.