On Thu, 08 Mar 2007 08:24:04 +0100, Eric Dumazet said: > > But what is the cost of the conditional branch you added in prefetch(x) ? > > if (!x) return; > > (correctly predicted or not, but do powerPC have a BTB ?) > > About the NULL 'potential problem', maybe we could use a dummy nil (but > mapped) object, and use its address in lists, ie compare for &nil instead of > NULL. This would avoid : > > - The conditional test in some prefetch() implementations > - The potential TLB problem with the NULL value.
You avoid those two, but add the very high likelyhood that a statement of the form 'if (!x) {....}' will creep back in and bug out. I doubt that changing the form of a basic C idiom to save a few cycles is worth it, especially when the (!x) form can be tested without a memory fetch, but (x != nil) may require fetching 'nil' (remember - the x86 is a very popular chipset, but register starved - if the loop is any size at all, 'nil' may require a reload each time around, costing you the win you thought you had....
pgpWRgqXbzEAw.pgp
Description: PGP signature