CPU는 클럭 주파수 증가 한계로 인해 다단계 캐시 구조로 발전했지만, 캐시 미스 발생 시 막대한 성능 손실을 초래합니다. 데이터 지역성(Data Locality)이 중요하며, 객체 지향 프로그래밍은 데이터 분산으로 캐시 미스를 유발할 수 있습니다. JIT 컴파일러도 만능 해결책은 아닙니다.
강연자는 물류 할인 계산 예시를 통해 초기 비효율적 코드와 최적화된 코드를 비교합니다. 초기 코드는 과도한 추상화로 데이터 처리 시 반복적인 비효율을 야기했습니다. Flame Graph 분석 후, ‘하드웨어 친화적’이고 데이터 중심적인 접근 방식을 적용했습니다.
이 최적화 전략은 다음을 포함합니다: 1. 성능 기준선 설정: 시스템의 기본 처리 속도 측정. 2. 데이터 중심 사고: 추상적인 디자인 패턴보다 데이터 흐름과 변형에 집중. 3. 컬렉션 단위 처리: 단일 항목 대신 전체 컬렉션에 대한 작업으로 효율 증대. 4. 데이터 사용 방식에 따른 조직화: 데이터를 사용될 방식에 맞춰 미리 구조화하여 데이터 지역성 및 캐시 효율 극대화.
이 개선을 통해 캐시 참조 수가 절반 이상 줄고, 처리 속도가 2.5배 빨라졌으며, 코드 라인 수 감소와 함께 가독성 및 유지보수성도 향상되었습니다.