int f(int x, int y){
if(x > y) return 1;
if(x < y) return -1;
return 0;
}
이거를
int f2(int x, int y){
return (x > y) - (x < y);
}
이런식으로 바꾼다거나
아니면
if(a > 3) x += a;
를
x + = (a & -(x > 3));
이렇게 바꾸는 트릭들을 말하는 거임
분기 예측이 잘되는 요즘 프로세서 기준으론
반복이 많이 될 경우 if있는게 더 빠름
대신 if가 없는 코드들은 언제나 위에서 아래로 같은 코드를 실행함
- dc official App
아 뭐 이정도는 인정하지
고작 그정도 이프할거면 매크로함수로 써버리면되지
개념 자체를 오해하고 있는듯 - dc App
int f(int x, int y){ if(x > y) return 1; if(x < y) return -1; return 0; }
이게더 빠르다고 하는거임?
x > y 인 상황이 계속 반복되면 당연히 그게 더 빠르지. 뒤에껀 실행 안하니까. 프로세서가 예측을 굉장히 잘해서 보통 어느 분기로 갈지 잘맞춤. 그래서 딱 필여한것만 실행함. - dc App
젤위에 x=2 y=0면 어캐동작하는지 풀이좀
return 1이자나 - dc App
풀이를 해달래니까 답을해주네 질문잘못한거도있네 다시 질문함 졜위예 바꾼거 어캐동작함?
저정도는 툴이 알아서 고쳐라고 뜨지않음