최적화 선택 기준

병목 유형 분류 기준

같은 “느림”이라도 원인은 알고리즘, 캐시, 할당, 동기화, I/O로 달라진다. 측정 지표에 맞는 기법만 선택해야 변경 비용을 줄일 수 있다.

1

측정

실제 입력과 릴리스 조건에서 비용이 큰 위치를 찾는다.

2

분류

CPU 계산, 메모리 접근, 할당, 대기 시간을 구분한다.

3

수정

정확성을 유지하면서 가장 작은 개선 후보부터 적용한다.

4

재측정

개선 수치와 부작용을 확인하고 다음 병목으로 넘어간다.

복잡도 병목

입력이 커질수록 급격히 느려지면 알고리즘과 자료구조를 먼저 바꾼다.

O(N²) → O(N log N)

캐시 병목

cache miss가 높으면 연속 메모리, 순차 접근, 구조체 배치를 검토한다.

vector · SoA · 순회 순서

할당 병목

작은 객체 생성이 반복되면 예약, 재사용, 풀, 이동 시맨틱을 적용한다.

reserve · pool · move

컴파일 병목

Debug 빌드로 측정했다면 릴리스 최적화, LTO, 벡터화 리포트를 본다.

-O2 · LTO · SIMD

동기화 병목

lock 대기가 크면 공유 상태를 줄이고 작업 단위를 더 크게 나눈다.

lock 범위 · false sharing

I/O 병목

시스템 호출이나 로그가 많으면 버퍼링, 배치 처리, 출력 제어를 쓴다.

buffer · batch · NDEBUG