측정
실제 입력과 릴리스 조건에서 비용이 큰 위치를 찾는다.
같은 “느림”이라도 원인은 알고리즘, 캐시, 할당, 동기화, I/O로 달라진다. 측정 지표에 맞는 기법만 선택해야 변경 비용을 줄일 수 있다.
실제 입력과 릴리스 조건에서 비용이 큰 위치를 찾는다.
CPU 계산, 메모리 접근, 할당, 대기 시간을 구분한다.
정확성을 유지하면서 가장 작은 개선 후보부터 적용한다.
개선 수치와 부작용을 확인하고 다음 병목으로 넘어간다.
입력이 커질수록 급격히 느려지면 알고리즘과 자료구조를 먼저 바꾼다.
O(N²) → O(N log N)cache miss가 높으면 연속 메모리, 순차 접근, 구조체 배치를 검토한다.
vector · SoA · 순회 순서작은 객체 생성이 반복되면 예약, 재사용, 풀, 이동 시맨틱을 적용한다.
reserve · pool · moveDebug 빌드로 측정했다면 릴리스 최적화, LTO, 벡터화 리포트를 본다.
-O2 · LTO · SIMDlock 대기가 크면 공유 상태를 줄이고 작업 단위를 더 크게 나눈다.
lock 범위 · false sharing시스템 호출이나 로그가 많으면 버퍼링, 배치 처리, 출력 제어를 쓴다.
buffer · batch · NDEBUG