optimization choices

최적화 우선순위

-O2, -O3, LTO, std::vector, std::list, std::unordered_map은 컴파일러와 자료구조 양쪽의 선택지입니다.

컴파일러 옵션

-O2/-O3 최적화 차이

LTO는 모듈 경계를 넘어 최적화할 여지를 만듭니다.

자료구조

std::vector std::list 비용 비교

접근 패턴을 기준으로 컨테이너를 다시 고릅니다.

캐시 효율

CPU 캐시 친화 순회

포인터를 따라가는 구조는 작은 데이터에서도 느릴 수 있습니다.

병렬 처리

병렬화 비용과 race

공유 쓰기가 많은 작업은 기대만큼 확장되지 않습니다.

불필요한 연산 루프 안 반복 계산과 중복 할당부터 줄입니다.
메모리 관리 할당 횟수를 줄이고 객체 재사용 범위를 정합니다.
측정 우선 수정 전후 시간을 같은 입력으로 재야 개선 여부가 보입니다.