본문 바로가기

개인공부/Branchless Programming

(Branchless Programming) 홀수 짝수 구하기

 

 

branch_even_odd 함수는 누구나 하는 홀수 짝수를 찾는 함수이다.

 

우린 저 코드에서  branchless_even_odd 함수의 작동 방식을 알아본다.

 

return x & 1; 

 

사실 MCU 를 조금이라도 다뤄보면 아는 방식이지만 그래도 설명하자면

홀수의 가장 오른쪽 비트는 항상 1이고

짝수의 가장 오른쪽 비트는 항상 0이다.

 

해서 & 연산을 때리게 되면 짝수는 0, 홀수는 1이 return 이 되는 함수이다.

 

 

아무튼 퍼포먼스 테스트를 time 으로 대충 돌린결과 

 

 

9.7ms vs 1.2ms 차이

 

거의 10배 성능차이를 보여준다.