Measure First

프로파일링 병목 데이터

최적화는 릴리스에 가까운 빌드에서 충분한 실행 시간을 측정하고, 수정 뒤 다시 같은 조건으로 비교해야 합니다.

빌드 조건-O2 -g 또는 /O2 /Zi처럼 최적화와 심볼을 함께 둡니다.
왜 측정하나직관으로 고른 위치가 실제 hotspot이 아닐 수 있어 시간과 복잡도를 낭비할 수 있습니다.
CPU

함수 시간과 호출 그래프를 봅니다

perf, gprof, Visual Studio Profiler가 hotspot을 드러냅니다.

memory

할당 패턴과 누수를 찾습니다

Valgrind, 진단 도구, sanitizer로 과도한 할당과 해제 누락을 추적합니다.

I/O

I/O 지연 분리

CPU가 쉬는 동안 대기하는 작업인지 확인하면 병렬화 방향이 달라집니다.

수집대표 입력과 충분한 실행 시간으로 샘플이 초기화 비용에 흔들리지 않게 합니다.
분석가장 많은 시간을 쓰는 함수와 호출 경로, 캐시 미스, 할당 빈도를 함께 봅니다.
재측정알고리즘 변경이나 메모리 개선 후 동일 조건에서 개선 폭을 확인합니다.

측정 병목 프로파일링 결과는 "느린 느낌"을 "어느 함수가 몇 퍼센트를 쓰는가"로 바꾸어 최적화 순서를 정하게 합니다.