Messages in this thread | | | Subject | Re: [PATCH 2/5] mm: remove unlikly NULL from kfree | From | Matt Mackall <> | Date | Wed, 25 Mar 2009 16:09:32 -0500 |
| |
On Wed, 2009-03-25 at 13:26 -0700, Jeremy Fitzhardinge wrote: > Steven Rostedt wrote: > > Thanks for this info! > > > > Although gcc plays a role too. That is, if we have > > > > if (x) > > do something small; > > > > do something large; > > > > > > this can be broken into: > > > > cmp x > > beq 1f > > do something small > > 1: > > do something large > > > > Which plays nice with the cache. But, by adding a unlikely(x), gcc will > > probably choose to do: > > > > cmp x > > bne 2f > > > > 1: > > do something large > > > > ret; > > > > 2: > > do something small > > b 1b > > > > which hurts in a number of ways. > > > > I think that's probably the dominant effect on x86 systems, because > Intel doesn't recommend using the branch hint prefixes as far as I can > tell (their consumption of icache space outweighs any benefit of priming > the predictor).
Yeah, I was actually thinking 'hint' in the gcc sense of adding unlikely() or not, which results in, say, choosing one code layout vs the other based on the CPU's cold-cache bias.
-- http://selenic.com : development and support for Mercurial and Linux
| |