Profiling Confidence

프로파일링 숫자는 조건을 고정해야 비교할 수 있다

도구가 보여 준 hotspot과 호출 그래프를 믿으려면 빌드, 입력, 실행 시간, 변경 범위를 함께 기록해야 한다.

빌드 조건

릴리스에 가까운 빌드

-O2/O2와 디버깅 심볼을 함께 써서 실제 실행 비용과 소스 위치를 같이 본다.

대표 입력

대표 입력 고정

작은 샘플만 돌리면 초기화와 우연한 캐시 상태가 결과를 흔들 수 있으므로 실제에 가까운 데이터를 쓴다.

측정 시간

충분한 실행 시간

너무 짧은 측정은 순간 부하에 약하다. 반복 실행으로 평균과 큰 편차를 함께 확인한다.

변경 단위

변경은 하나씩

알고리즘, 캐시 접근, 할당 줄이기 중 하나만 바꾼 뒤 같은 조건으로 다시 측정한다.

CPU

프로파일러

perf, gprof, Instruments는 함수별 시간과 호출 경로를 보여 주어 병목 후보를 좁힌다.

MEM

메모리 검사

Valgrind, ASan, LSan은 누수와 잘못된 접근을 찾지만 실행 오버헤드와 빌드 조건을 기록해야 한다.

TIME

std::chrono

작은 코드 블록의 전후 비교에는 기준값을 주지만 전체 병목 지도는 전문 프로파일러로 확인한다.