unlikely 함수의 효용.

tatchi의 이미지

굳이 unlikely를 쓰는 이유를 잘 모르겠습니다.
예를 들어,

if(unlike(host[i] == ':'))

는 그냥

if(host[i]==':')

로 써도 무방하지 않은가요?

검색하여 보니, 파이프라인 사용시 깨지는 것을 방지하여 준다...
라고는 하는데 무슨 말인지 도통 모르겠습니다.

ymir의 이미지

CPU 에서 next instruction 을 pre-fetch 해서 pipeline 에 넣고 대기하는데..
conditional branch 의 경우에는 next instruction 을 예측하기가 어렵습니다.
이 경우에는 prediction 을 통해 pre-fetch 를 해오는데...
어쨌든 틀렸다면 현재 instruction 을 discard 하고 새로 fetch 를 해와야겠죠. (pipeline stall)
그래서 likely, unlikely keyword 를 통해 prediction 방향을 지시해줘서..
가급적 pipeline stall 이 적게 일어나게끔 하는 걸로 알고 있습니다.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』