본문 바로가기

개인공부/Branchless Programming

Branchless Programming 이란

 

Branchless 프로그래밍이랑 조건문을 사용하지 않고, 가능한 조건 분기(branch) (if, else, switch, ?:) 없이 코드를 작성하여 성능 향상을 노리는 프로그래밍 기법이다.

CPU의 branch prediction 실패로 인한 파이프라인 flush 를 줄인다.

 

주로 최적화를 극한으로 끌어올려야 하는 환경에서 사용된다.

 

CPU는 분기를 예측하고 명령어를 미리 실행하는데, 예측이 틀리면 다시 돌아가서 파이프라인 flush를 일으킨다.

특히 if 조건문이 많으면 큰 영향을 미치는데 보통 비트연산 수학연산으로 대체한다.