OpenCV를 이용한 프로젝트를 하고 있는데, 실시간 처리가 되어야 하는 상황이다. 따라서 프로그램을 태스크 단위로 쪼개서 시간을 측정해야 한다. 기본적으로 프로그램 실행 시간을 측정하는 방법은 clock의 수를 센 뒤Clock rate, 즉 CLOCK_PER_SECOND로 나누어 주는 방식인데, 이 clock rate라는 것이 보드마다 다르기 때문에 해당 시스템에 맞는 값을 구해줘야 한다. 하지만 OpenCV는 이를 위한 클래스를 제공하고 있으므로 복잡하게 구현하지 않고 이것을 사용할 예정이다.
기본적으로는 스톱워치랑 동작방법이 똑같기 때문에 복잡하지 않게 구현할 수 있다.
#include <opencv2/core/utility.hpp>
cv::TickMeter tm; // 타이머 선언
tm.reset() // 타이머 리셋
tm.start() // 측정 시작
doSomething();
tm.stop() // 측정 종료
// ms단위로 변환하여 출력
cout << tm.getTimeMilli() << "ms";
getTimeXXXX
호출 시 가장 최근 reset 시점 ~ stop 시점까지의 시간을 micro, milli, sec단위로 리턴해준다.