Jeff Garzik wrote:
> Is this theory, or it has been actually measured?
> 
> In x86-based CPUs at least (the largest tg3 platform), branch 
> prediction 
> often prefers
> 
>       if (...)
>               direct_func_1()
>       else
>               direct_func_2()
> 
> to
> 
>       tp->func()
> 
> For hot paths, branch prediction will almost always predict 
> the correct 
> path, without any need for deferenced, indirect jumps.
> 
> The latter example may look more clean, but the former is probably 
> faster in Real Life(tm).
> 

Not measured. But with so many different workaround methods
(TG3_FLAG_MBOX_WRITE_REORDER, TG3_FLAG_TXD_MBOX_HWBUG,
TG3_FLG2_ICH_WORKAROUND, TG3_FLAG_5701_REG_WRITE_BUG, etc), it's
more like:

        if (...)
                direct_func_1()
        else if (...)
                direct_func_2()
        else if (...)
                direct_func_3()
        else
                direct_func_4()

At some point I suspect the indirect function pointer method will
become better.
 

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to