Re:Open Source at Google: Introducing CityHash
by haberman on Monday April 11, 2011 @08:22PM
(#2435136)
A lot of instruction sets (including x86) let you encode branch prediction hints into the actual instructions to help out the branch predictors. But for x86 at least these hints didn't turn out to be too useful, so they're ignored (except on P4, I believe).
The gcc built-in simply will organize the code in a manner that makes the likely statement faster to execute (e.g. branching the unlikely block).
Branch predictors are a runtime mechanism so the processor guesses which outcome of the "if" is more likely.
One is a static optimization, the other is dynamic; if you like to think about it that way.