본문 바로가기

운동하는 개발자/c++

C++로 Windows 환경에서 코드 동작 시간 체크 (feat. GetTickCount64의 오류)

728x90

코드를 작성하여 테스트하던 중 생각보다 속도가 느려서 어디서 시간이 딜레이되는지 확인해야 하는 경우가 종종있다.

기존 사내 프로젝트 전임자의 코드에서 GetTickCount64()를 쓴 흔적이 있길래 그대로 사용하여 로그를 찍어봤더니
대부분의 코드에서는 0ms으로 찍히나 일부 로그가 15~17ms로 찍히는것이 확인되었다.

대부분 같은 구간에서 찍혀서 해당 시간이 실제인줄 알았으나...

GetTickCout64()는 IRQ(Interrupt Request) 즉 인터럽트 처리 시간이 발생하여 해당 로그가 찍힌것이였다.

이후 찾아보니 GetTickCout64()는 20ms이내의 수행시간일 경우 오차범위가 존재하였다.

나는 초당 60프레임의 비디오 데이터를 처리하는 로직을 테스트 중에 있었기에 16ms이내의 시간에 모든 로직이 동작하므로 올바른 코드 동작시간을 얻지 못하고 있었던것이다.

이후 clock_t를 사용하여 시간을 측정했고 상당히 정확하게 나왔다.

만약 더 높은 정확도를 필요로 한다면 QueryPerformanceCounter를 사용할것을 추천한다

 

아래는 내가 찾아본 글 중 너무 깔끔하고 잘 정리된 수행시간 체크 비교글 링크

https://velog.io/@jooss287/%EC%BD%94%EB%93%9C%EC%9D%98-%EC%88%98%ED%96%89%EC%8B%9C%EA%B0%84-%EC%B2%B4%ED%81%AC%ED%95%98%EA%B8%B0

 

코드의 수행시간 체크하기

수행시간 분석

velog.io

 

728x90