릴리스에 가까운 빌드
-O2나 /O2와 디버깅 심볼을 함께 써서 실제
실행 비용과 소스 위치를 같이 본다.
도구가 보여 준 hotspot과 호출 그래프를 믿으려면 빌드, 입력, 실행 시간, 변경 범위를 함께 기록해야 한다.
-O2나 /O2와 디버깅 심볼을 함께 써서 실제
실행 비용과 소스 위치를 같이 본다.
작은 샘플만 돌리면 초기화와 우연한 캐시 상태가 결과를 흔들 수 있으므로 실제에 가까운 데이터를 쓴다.
너무 짧은 측정은 순간 부하에 약하다. 반복 실행으로 평균과 큰 편차를 함께 확인한다.
알고리즘, 캐시 접근, 할당 줄이기 중 하나만 바꾼 뒤 같은 조건으로 다시 측정한다.
perf, gprof, Instruments는 함수별 시간과 호출 경로를
보여 주어 병목 후보를 좁힌다.
Valgrind, ASan, LSan은 누수와 잘못된 접근을 찾지만 실행 오버헤드와 빌드 조건을 기록해야 한다.
std::chrono작은 코드 블록의 전후 비교에는 기준값을 주지만 전체 병목 지도는 전문 프로파일러로 확인한다.