추측으로 최적화하지 않기 위한 첫 단계다.
방법 셋
계측(instrumentation) 함수 앞뒤에 사이클 카운터를 넣는다
정확하지만 코드를 건드리고 오버헤드가 있다
통계적 샘플링 타이머 인터럽트에서 스택의 PC 를 기록한다
"어느 함수에서 자주 잡히는가" 로 분포를 얻는다
외부 관측 GPIO 토글을 로직 분석기로 본다
오버헤드가 거의 없고 타이밍 관계가 눈에 보인다
임베디드 특유의 관점
PC 소프트웨어는 총 실행 시간을 보지만, 임베디드는 최악 지연과 주기 지킴을 본다.
평균 200µs, 최대 3ms → 평균은 문제없지만 1ms 주기를 못 지킨다
그래서 측정할 때 최댓값과 분포를 함께 남긴다.
순서
1. 무엇이 느린지 잰다 (여기)
2. 왜 느린지 본다 알고리즘인가, 대기인가, 인터럽트인가
3. 고치고 다시 잰다 숫자로 확인되지 않으면 고친 게 아니다