C++ · 최적화 루프

프로파일링에서 재측정까지

최적화는 추측이 아니라 측정에서 출발합니다. 병목 유형을 분류하고 비용 대비 효과가 큰 선택지를 적용한 뒤, 같은 조건에서 다시 확인합니다.

1

프로파일링 결과

시간, 할당, 캐시 미스, lock 대기처럼 실제로 높은 지표를 먼저 봅니다.

2

병목 유형

CPU, 메모리 접근, 할당, 동기화, I/O 중 어디에 가까운지 분류합니다.

3

최적화 선택

정확성을 유지하면서 가장 작은 변경으로 검증 가능한 개선을 고릅니다.

4

재측정

같은 입력과 빌드 조건에서 전후 차이를 비교하고 다음 병목으로 반복합니다.

결정 기준표

profile first

컴파일러 최적화

릴리스 빌드가 아니거나 인라인, 벡터화, LTO 여지가 클 때 먼저 확인합니다.

알고리즘/자료구조

입력 크기가 커질수록 시간이 급증하면 복잡도와 컨테이너 선택을 바꿉니다.

캐시 지역성

cache miss와 랜덤 접근이 높으면 연속 배치, 순회 순서, AoS/SoA를 봅니다.

할당 감소

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

병렬화

독립 작업이 충분하고 동기화 비용보다 계산량이 클 때 분할 실행을 선택합니다.