performance of the swtich/case statements

Erich Dollansky erichsfreebsdlist at alogt.com
Wed Oct 29 22:31:06 UTC 2014


Hi,

On Wed, 29 Oct 2014 22:39:34 +0800
"bycn82" <bycn82 at gmail.com> wrote:

> It is using the switch/case statement to make the code clear in the
> 
> I am not a C programmer, so I am not clear how the switch/case will be
> optimized by the compiler in FreeBSD. But I used to write a compiler
> by myself and I use a hash table to handle all the conditions in the
> case statements because my compiler don't care about performance!,
> But in C it is different, the case statement can only accept "int"
> values, so I don't think it will use hash or what , it should be
> directly use an array(), So whether it can be optimized it depends on
> the conditions in the switch/case statements, and I noticed that the
> cases statement in the 2 loops are not arranging the opcode in
> running number, so does the compiler smart enough to optimize it?
> 
>  
I did not check recently. It was already a long, long time ago, that
compilers checked the limits and used the values as an index into a
table to jump to the code. I hope that this did not get changed.

With other words, the order in the code does not matter. The only
optimisation the compiler can do, is not to use a table if the
statement consists of a low number of entries only.

Erich


More information about the freebsd-ipfw mailing list