728x90
코드를 작성하여 테스트하던 중 생각보다 속도가 느려서 어디서 시간이 딜레이되는지 확인해야 하는 경우가 종종있다.
기존 사내 프로젝트 전임자의 코드에서 GetTickCount64()를 쓴 흔적이 있길래 그대로 사용하여 로그를 찍어봤더니
대부분의 코드에서는 0ms으로 찍히나 일부 로그가 15~17ms로 찍히는것이 확인되었다.
대부분 같은 구간에서 찍혀서 해당 시간이 실제인줄 알았으나...
GetTickCout64()는 IRQ(Interrupt Request) 즉 인터럽트 처리 시간이 발생하여 해당 로그가 찍힌것이였다.
이후 찾아보니 GetTickCout64()는 20ms이내의 수행시간일 경우 오차범위가 존재하였다.
나는 초당 60프레임의 비디오 데이터를 처리하는 로직을 테스트 중에 있었기에 16ms이내의 시간에 모든 로직이 동작하므로 올바른 코드 동작시간을 얻지 못하고 있었던것이다.
이후 clock_t를 사용하여 시간을 측정했고 상당히 정확하게 나왔다.
만약 더 높은 정확도를 필요로 한다면 QueryPerformanceCounter를 사용할것을 추천한다
아래는 내가 찾아본 글 중 너무 깔끔하고 잘 정리된 수행시간 체크 비교글 링크
728x90
'운동하는 개발자 > c++' 카테고리의 다른 글
MFC] 프로세스에 연결할 수 없습니다. 지정된 파일을 찾을 수 없습니다. (0) | 2024.10.11 |
---|---|
Visual studio Stack overflow (Stack Reserve Size) (0) | 2023.11.29 |
Beakjoon] 절댓값 힙 구현하기 (백준 11286 코테) = 우선순위 (0) | 2023.11.18 |
LNK2038: mismatch detected for ‘_ITERATOR_DEBUG_LEVEL': value ‘0’ doesn’t match value ‘2’ (0) | 2023.08.13 |
CString to char* (UTF8) (0) | 2023.08.12 |