두 정수 값이 있을 때 최소값을 결정하기 위한 일반적인 방법은 아래와 같다.
if(x > y) min = y;
else min = x;
그러나 이것은 조건문 없이 구현이 가능하다.
min = x ^ ( (x^y) & -(x > y))
위 수식에서 x가 y보다 크면 min = y 가 되고, 작거나 같으면 min = x가 된다!!
수식에는 x > y라는 조건문이 있으나 이것은 전체 수식에서 연산의 일부가 되면서 predictable branch가 되어 pipeline이 깨지지 않고 처리할 수 있다.
* MIT OCW 'Performance Engineering of Software Systems' 두번째 강의를 듣고 정리함.
'프로그래밍' 카테고리의 다른 글
AVR RS-232 flash burning software (0) | 2012.11.13 |
---|---|
De Brujin sequence(카드 맞추기 마술!!) (0) | 2012.10.29 |
Amdahl's law (0) | 2012.10.25 |
소프트웨어 테스팅 vs. 정형 검증 (0) | 2012.10.06 |
부트로더는 왜 필요한가? (0) | 2012.07.19 |