"쓸모없는" if 하나로 코드 성능 4배 향상

Quadrupling code performance with a "useless" if

도메인 특화 압축기 최적화 과정에서, 단순해 보이는 루프가 메모리 접근 지연(latency)에 묶여 성능이 제한된다는 사실을 발견했다. 각 반복이 이전 반복의 결과에 의존하는 구조 때문에 CPU의 명령어 수준 병렬 처리를 활용하지 못했던 것이다. 저자는 분기 예측을 활용해 종속성을 끊는 '쓸모없는' if 문을 추가하고, 컴파일러가 이를 제거하지 못하도록 volatile 캐스팅을 사용했다. 그 결과 합성 벤치마크에서 4배, 실제 실험에서 2배의 성능 향상을 얻었다. 이 기법은 특정 상황에서 분기 없는 코드보다 분기 있는 코드가 더 빠를 수 있음을 보여준다.

멍청한 컴파일러는 정수에 하드웨어 출처(provenance)가 있다는 걸 깨닫지 못한다.

이 날의 다른 글

2026-07-13