if 하나 제거로 필터 4배 빨라진다: Rust 브랜치리스 프로그래밍

Branchless Rust: Making a Filter 4x Faster by Removing an If

if 하나 제거로 필터 4배 빨라진다: Rust 브랜치리스 프로그래밍

Rust 개발자 Serhii Potapov가 필터 함수의 성능을 최적화하면서 발견한 브랜치리스(branchless) 프로그래밍 기법을 소개합니다. 100만 개의 랜덤 f64 데이터에서 50%를 걸러내는 작업이 99%를 걸러내는 것보다 2.6배 느린 이유는 CPU의 분기 예측 실패 때문입니다. 분기 예측이 어려운 데이터에서는 매번 예측이 빗나가 파이프라인이 플러시되며 큰 비용이 발생합니다. 해결책은 if 문을 제거하고 비교 결과를 숫자로 사용해 항상 쓰고 조건부로 커서를 이동하는 방식입니다. 이 기법으로 최악의 경우 4배 빨라졌지만, 예측이 잘 되는 경우에는 오히려 느려질 수 있어 신중한 적용이 필요합니다.

분기(branch)는 저렴하다. 하지만 잘못 예측된 분기(mispredicted branch)는 그렇지 않다.

같은 날의 다른 소식

2026-08-06