복잡도 축소 기준
O(N^2)을 O(N log N)으로 바꾸는 효과는 미세
조정보다 큽니다.
측정된 병목에 맞춰 시간 복잡도, 캐시 지역성, 동적 할당, 병렬화 중 효과가 큰 지점을 먼저 바꿉니다.
-O2, -O3, LTO는 기본 성능을 올리지만
실제 효과는 프로파일링으로 확인합니다.
O(N^2)을 O(N log N)으로 바꾸는 효과는 미세
조정보다 큽니다.
std::vector처럼 공간 지역성이 높은 구조는 캐시 히트율을
높입니다.
reserve(), 스택 객체, 메모리 풀로 작은 동적 할당의 누적
비용을 낮춥니다.
noexcept가 성능에 영향을 줍니다.
측정 병목 최적화는 "빠르게 보이는 코드"가 아니라 측정으로 확인된 병목을 더 적은 연산, 더 나은 메모리 배치, 더 낮은 대기 시간으로 바꾸는 작업입니다.